一、问题
今天的程序在一台新电脑上运行,出现java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path异常,
具体报错日志:
Exception in thread "Thread-12" java.lang.UnsatisfiedLinkError: no jniopencv_core 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 org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1191)
at org.bytedeco.javacpp.Loader.load(Loader.java:953)
at org.bytedeco.javacpp.Loader.load(Loader.java:854)
at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.bytedeco.javacpp.Loader.load(Loader.java:913)
at org.bytedeco.javacpp.Loader.load(Loader.java:854)
at org.bytedeco.javacpp.opencv_imgcodecs.<clinit>(opencv_imgcodecs.java:13)
at com.utils.MatchTemplateUtil.getPicMaxSimValue(MatchTemplateUtil.java:146)
at com.utils.ExcuteUtil.getScrrenshotAndCompare(ExcuteUtil.java:3251)
at com.utils.ExcuteUtil.adbComparePicsJavacv(ExcuteUtil.java:1595)
at com.utils.ExcuteUtil.excuteSingleStep(ExcuteUtil.java:163)
at com.main.widget.ToolsView$4$2$1.run(ToolsView.java:1203)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: C:\Users\test\.javacpp\cache\opencv-windows-x86_64.jar\org\bytedeco\javacpp\windows-x86_64\jniopencv_core.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1171)
... 14 more
Exception in thread "Thread-41" java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.opencv_imgcodecs
at com.utils.MatchTemplateUtil.getPicMaxSimValue(MatchTemplateUtil.java:146)
at com.utils.ExcuteUtil.getScrrenshotAndCompare(ExcuteUtil.java:3251)
at com.utils.ExcuteUtil.adbComparePicsJavacv(ExcuteUtil.java:1595)
at com.utils.ExcuteUtil.excuteSteps(ExcuteUtil.java:405)
at com.main.widget.ToolsView$excuteCaseThread.run(ToolsView.java:4975)
二、分析解决
从日志看,报错的是opencv相关的依赖,这个问题,在旧电脑上是没有出现的,到新电脑才出现,说明应该是环境差异引起的问题,依赖的jar和相关库都打包在程序里了。
查了一下网上的解决方案,都是程序里面库冲突或者缺少库,但是我这里再旧电脑上运行没有问题,所以有点头疼。
然后查看了下新电脑已安装的软件和旧电脑安装软件的区别,发现旧电脑有很多c++的库,但是新电脑因为刚安装的纯净版,什么软件都没装,很干净,下面是旧电脑多安装的c++相关库:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200918113112852.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dkY3lmMTU=,size_16,color_FFFFFF,t_70#pic_center)
怀疑是没有安装c++相关环境引起的
搜索:microsoft visual c++
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200918113359761.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dkY3lmMTU=,size_16,color_FFFFFF,t_70#pic_center)
下载:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200918113520520.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dkY3lmMTU=,size_16,color_FFFFFF,t_70#pic_center)
直达链接:VC_redist.x64.exe
安装完后,重新运行软件,问题解决。