Smajl :
나는 어떤 부하 네이티브 라이브러리를 간단한 봄 부트 프로젝트가 있습니다. 문제는 내가 어떻게 응용 프로그램을 실행할 때 네이티브 라이브러리 경로를 지정하는 생각이 없다는 것입니다.
내가 설정하는 방법을 설명하는 글의 톤 읽고 java.library.path
에 있지만, 모든 하나 하나 개 리드
java.lang.UnsatisfiedLinkError: /path/to/lib/libconnector.so: libconnector.so: cannot open shared object file: No such file or directory
내가 명령 줄에서 순서대로이 두 명령을 실행하면이 프로젝트는 작동합니다 :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib
./gradlew bootRun
이 라이브러리는로드 작품입니다. 하지만 내 Gradle을 파일의 라이브러리 경로를 지정 드릴 수 없습니다. 나는 시도
run {
systemProperty 'java.library.path', file('/path/to/lib')
}
bootRun {
systemProperty 'java.library.path', file('/path/to/lib')
}
모든이의 변화로 정렬합니다. 또한 내 IDE 등 아무것도하지만, 작품에 VM 인수를 추가했습니다. 누군가가 내가 잘못을하고있는 중이 설명해 주시겠습니까?
이것은 내가 네이티브 라이브러리를 (에 위치한로드하는 방법입니다 $projectRoot/lib
)
static {
// load connector library
File lib = new File("lib/" + System.mapLibraryName("connector"));
System.load(lib.getAbsolutePath());
}
Smajl :
나는 결국 내 문제를 해결했다. 나는 통과해야 LD_LIBRARY_PATH
하는 환경 변수로 대신 java.library.path
응용 프로그램을 실행하면 시스템 속성으로.
다음 Gradle을 수정 내 문제를 해결 :
tasks.withType(JavaExec) {
environment('LD_LIBRARY_PATH', 'lib')
}