我已经通过 netbeans 构建了一个 jar,指定了我的主类和库。在属性部分中,我在库部分中有库,并且我已经设置了
-Djava.library.path=/path/to/lib
在运行部分。但是,当我使用
通过命令行运行 jar 文件时java -jar
返回错误
java.lang.UnsatisfiedLinkError: no libName in java.library.path
与我的jar文件同级目录下有一个lib目录,里面有库,jar中的manifest文件包含
Class-Path: lib/libName.jar
我的 jar 文件有什么问题?
最佳答案
java.library.path
不用于加载 jar
文件,而是用于加载例如使用的 native 库。 JNI。从错误消息看来,您的应用程序正在调用 System.loadLibrary("libName")
,因此您的系统正在寻找 libName.dll
(在 Windows 上)或 libName.so
(在 Unix 上)不存在。
如果 libName.jar
中只有一些类,则不需要 System.loadLibrary()
也不需要 java.library.path
> - 只需在类路径中包含 libName.jar
,java 就会找到它需要的一切。
如果 libName.jar
包含您想要使用的 native 库:没有直接的方法可以从内部加载 dll
或 so
jar
而不先解压它们,因此最简单的方法是将 native 库放在 jar 之外,作为 /lib
目录中的额外文件。还有一些库允许您使用 jar 内的 native 库 - 请参阅 this question了解更多信息。
关于java - 运行 jar 文件返回 java.library.path 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24737851/