[英]java.lang.UnsatisfiedLinkError: no so in java.library.path
[英][Linux]Load .so file for JNI results in: java.lang.UnsatisfiedLinkError: no libdebug in java.library.path
我需要在我的Java應用程序中調用一些本機C ++代碼,因此我使用'System.loadLibrary(String)'來加載所需的.so文件,但是當我嘗試從Eclipse執行Java應用程序時,我收到以下錯誤消息:
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
如果您調用System.loadLibrary("foo")
那么JVM將在Unix上查找名為libfoo.so
的共享庫,在Windows上foo.dll
。
您正在根據該鏈接行調用您的共享庫Debug.so.1.0
。
嘗試將您的庫重命名為libDebug.so
(或從Debug.so.1.0
創建符號鏈接到libDebug.so
),然后將源代碼行更改為System.loadLibrary("Debug");
並告訴我們會發生什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.