运行jar文件会返回java.library.path错误

时间:2014-07-14 13:39:37

标签: java jar

我通过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文件出了什么问题?

1 个答案:

答案 0 :(得分:1)

java.library.path不用于加载jar - 文件,而是用于加载由例如{em}使用的 native 库。 JNI。从错误消息看,您的应用程序似乎正在调用System.loadLibrary("libName"),因此您的系统正在寻找libName.dll(在Windows上)或libName.so(在Unix上),而不是那里。

如果您只在libName.jar中有一些课程,则不需要System.loadLibrary()java.library.path - 只需在课程路径中包含libName.jar,java就会找到所需的一切

如果libName.jar包含您要使用的本机库:没有直接的方法可以在dll内加载sojar,而无需先解压缩它们,所以最简单的方法是将jar中的本机库作为额外文件放在/lib目录中。还有一些库允许您在jar中使用本机库 - 有关详细信息,请参阅this question