2012-07-25 119 views
1

我有以下的JNI共享庫位於/數據/ subv/MEM,我已經設置了LD_LIBRARY_PATH到:Java庫路徑問題

LD_LIBRARY_PATH=/data/subv/Mem 

它包含兩個文件:bmemBridgelib.so和memBridgelib.so,生成使用:

gcc -I"/usr/lib/jvm/java-6-sun/include" -I"/usr/lib/jvm/java-6-sun/include/linux" -o 
    libmemBridgelib.so -shared -Wl,-soname,libmemBridge.so JniBridge.c -static -lc -fPIC 

我加載庫在我的Java程序使用JNI如下

static { 
    System.loadLibrary("memBridgelib"); 
} 

但得到以下錯誤:

Caused by: java.lang.UnsatisfiedLinkError: no memBridgelib in java.library.path 

當我打印的庫路徑,我可以證實,MEM文件夾不是在它:

/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib 

任何想法?所有其他相關的問題似乎被設置LD_LIBRARY_PATH

感謝

回答

2
java -Djava.library.path=/data/ncrooks/subv/stream-paas/Mem[:<other_lib_paths>] ... 

More details來解決。

+0

儘管這會覆蓋整個類路徑。我用一個我不能修改的gradlew腳本來編譯我的程序......我同意,雖然這將是一個簡單的答案:p – user1018513 2012-07-25 17:14:59

+0

@ user1018513 - 它不影響_classpath_,是的,它是唯一的解決方案。如果你需要庫路徑上的其他東西,也可以添加它們。 – jtahlborn 2012-07-25 17:15:54

+0

爲什麼LD_LIBRARY_PATH不適用於此?似乎工作其他 – user1018513 2012-07-25 17:17:34