我有一个特定项目的SDK。我已经在我的计算机上安装了这个SDK,然后我对客户端提供的示例代码进行了一些修改。之后我从Eclipse为这段代码创建了可运行的JAR,它既可以从CMD成功运行,也可以双击它。
现在我希望我的Jar文件在其他PC上执行但我收到一个错误:java.library.path中没有MorphoSmartSDKJavaWrapper。
我也得到了相同的错误,但后来我为此设置了系统的环境变量,但我想删除环境变量的这种依赖,所以我在Main Class中编写代码来设置内存中的环境变量,现在没有设置手动系统中的任何环境变量我都可以在我的电脑上成功打开我的Jar文件。
现在我想在其他PC上运行这个Jar文件,但它给出了一个错误“错误:java.library.path中没有MorphoSmartSDKJavaWrapper。”
我不明白我错过了什么。为什么我无法通过双击其他PC来打开此JAR文件。 谢谢。
答案 0 :(得分:1)
它是你的应用程序/ jar依赖于其他包装程序库可能是一个DLL(可能在安装SDK时安装在程序文件下)。在其他计算机上运行此应用程序时,需要提供该库。捷径是通过命令行参数
提供的java -cp xxxx.jar -Djava.library.path=path/to/lib
https://examples.javacodegeeks.com/java-basics/java-library-path-what-is-it-and-how-to-use/
答案 1 :(得分:0)
正如@kuhajeyan所指出,你的jar正在 java.library.path 系统属性中设置的路径中寻找本机库(可能是一些dll)。安装SDK后,系统中会提供本机库, java.library.path 指向可用的位置。对于您收到错误的其他系统,本机库不可用或 java.library.path 未指向可用的位置。
由于你的要求是双击运行jar,我建议你使用
public static void load(String filename)
系统claas的api在应用程序启动时加载库。
例如,如果您的库文件名是foo.dll并且位于C:\ Program Files \ Java \ jdk1.8.0_73 \ bin,那么您的方法将如下所示:
System.load("C:\\Program Files\\Java\\jdk1.8.0_73\\bin\\foo.dll")