我需要一些本地C++代碼在我的Java應用程序中被調用,所以我使用'System.loadLibrary(字符串)」所要求的.so文件加載,但是當我試圖執行從Eclipse的Java應用程序我得到這個錯誤信息:[Linux]爲JNI加載.so文件導致:java.lang.UnsatisfiedLinkError:java.library.path中沒有libdebug
Exception in thread "main" java.lang.UnsatisfiedLinkError: no libdebug in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at org.server.util.Debug.<clinit>(Debug.java:5)
at org.server.Server.main(Server.java:18)
庫路徑屬性設置爲:
java.library.path="/home/benjamin/Downloads/jdk1.6.0_24/jre/lib/i386/client:/home/benjamin/Downloads/jdk1.6.0_24/jre/lib/i386"
而且我將libdebug.so放入/home/benjamin/Downloads/jdk1.6.0_24/jre/lib/i386/。 的.so文件編譯如下:
g++ -I /home/benjamin/Downloads/jdk1.6.0_24/include
-I /home/benjamin/Downloads/jdk1.6.0_24/include/linux -fPIC -c debug.cpp
-o /home/benjamin/workspace/server/bin/linux-x86/debug.o
和鏈接是這樣的:
ld -shared -soname Debug.so.1 -o Debug.so.1.0 -lc debug.o
如果用'java -Djava.library.path =/home/benjamin/Downloads/jdk1.6.0_24/jre/lib/i386/org.server.Server'手動運行,你還是會得到'UnsatisfiedLinkError' ? – 2011-04-20 21:31:56
是的,我願意。 riijgjweg(< - 抱歉必須符合最小字符限制:O) – Benjamin 2011-04-20 21:39:11
如果切換到'System.load(「/ home/benjamin/Downloads/jdk1.6.0_24/jre/lib/i386/libdebug.so」)會怎樣? '?那樣有用嗎? – 2011-04-20 21:49:08