JavaFx+openCv项目在win7系统部署异常(no opencv_java310 in java.library.path)



【学习参考】
JavaFx+openCv项目代码参考官网教程点击跳转
JavaFx项目部署参考点击跳转
【问题解决】
以上是学习的参考,实际操作部署后,运行exe文件会出现两个错误弹窗:
Error invoking method!
Failed to launch jvm!
.exe程序无法执行。

根据网上的找的半自动解决方法【直接执行jar包看异常】,出现以下异常内容。

java.lang.reflect.InvocationTargetException
    <省略部分异常>
Caused by: java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at application.Main.main(Unknown Source)
        ... 11 more
Exception running application application.Main

然后根据java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path继续查找问题,看了多个解决方法后,明白问题的来源是程序中System.loadLibrary(Core.NATIVE_LIBRARY_NAME);加载不到opencv_java310.dll,而我用eclipse调试时因为按照教程对该参数进行设置过了,所以没有报错,但是部署的文件并不能获取到该参数,因此异常。所以对该加载opencv_java310.dll程序进行修改即可。修改如下:(两种方法,选其一即可)
相对路径方法

第一步:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
修改为:
String relativelyPath=System.getProperty("user.dir"); 
System.load(relativelyPath+"\\opencv_java310.dll");
第二步:
部署安装,但还是会报错
第三步:
找到部署的文件安装位置,默认C:\Users\[用户名]\AppData\Local\[项目名],然后打开其下的app文件夹,将opencv_java310.dll拷贝到这里。
执行上层文件夹中的exe文件即可正常运行,无报错。

绝对路径方法:

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
修改为:
System.load("E:\\opencv\\build\\java\\x64\\opencv_java310.dll");
以上路径根据你的opencv_java310.dll实际位置修改。
重新打包部署,然后执行无报错。

这里写图片描述