봄 부팅 네이티브 라이브러리를로드

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')
}

추천

출처http://43.154.161.224:23101/article/api/json?id=190735&siteId=1