我在Ubuntu下使用Java和Netbeans。我正在与JNI合作,并希望在Linux中加载dll,它具有“.so”扩展名。为什么这段代码有效:
static {
System.load("/home/user/NetBeansProjects/JD2XX-DLL2/dist/jd2xx.so");
}
但这不是:
static {
System.loadLibrary("jd2xx");
}
将netbeans中指定的VM选项设置为:
-Djava.library.path="/home/user/NetBeansProjects/JD2XX-DLL2/dist/"
我收到错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
no jd2xx.so in java.library.path
这适用于Windows。
答案 0 :(得分:8)
在Unix系统上,
System.loadLibrary("Foo");
在库搜索路径中查找名为libFoo.so
的文件。
相应地重命名文件。
相比之下,在Windows系统上,该调用将在库搜索路径中查找名为Foo.dll
的文件。