繁体   English   中英

运行可执行文件jar在java.library.path错误中不会抛出opencv_java310但在IDE中运行正常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM