[英]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.