[英]Running Executable Jar throws no opencv_java310 in java.library.path error but runs fine in IDE
我使用Opencv 3.1 Java库制作了JavaFX Project。
问题是我的项目从IDE运行完全完美,但是当我尝试从dist
文件夹运行.jar
文件时,它会抛出不满意的链接错误。
我已经搜索过这个问题并找到了很多答案,但没有解决我的问题。我想可能是那些解决方案适用于旧版本。
我的主要方法如下: -
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
launch(args);
}
我还正确设置了库路径 :
并且在指定位置也有.dll文件
如果我从IDE运行,应用程序完全按预期运行!
PS:我也尝试将项目放在Eclipse中并尝试创建jar但是同样的事情发生了,它在IDE中运行但不是在我运行jar时
错误详情 :
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.Rein.rteapp.MainApp.main(MainApp.java:129)
我找到了解决方案。
我通过使用相对路径来解决它,无论我需要什么来引用一些外部资源。所以你使用System.getProperty("user.dir")
它指的是你的应用程序根文件夹。
例如: - 如果你引用了类似的东西: -
String path = System.getProperty("user.dir") + "\\MyResourceFolder";
然后,您必须将'MyResourceFolder'复制到创建jar的文件夹中(jar文件旁边)。
该解决方案在IDE中运行,因为我们已将资源文件夹复制到Project根文件夹中,但是当我们创建jar文件时,这些资源文件不会被复制到jar文件夹中,因此我们必须手动复制所有这些资源文件夹及其内容我们运行jar时创建Jar文件以保持相对路径的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.