当前位置: 首页 > 面试题库 >

试图使使用OpenCV的Java应用程序(可执行Jar)可移植。收到不满意的链接错误

慕阳平
2023-03-14
问题内容

我已经开发了一个应用程序,可以从网络摄像头抓取视频并使用OpenCV和JavaCV检测运动。我正在尝试使用eclipse导出为可执行jar。程序在eclipse中运行良好,就像我在其中编写程序的计算机上的exe
jar一样。

我要完成的工作是使exe Jar在未安装OpenCV的计算机上运行。基本上我会考虑可移植的应用程序。当我在没有安装JRE的其他计算机上运行exe
jar时,出现如下所示的不满意的链接错误。

Exception in thread "Video Thread" java.lang.UnsatisfiedLinkError: C:\Users\JohnD\AppData\Local\Temp\javacpp91062429652918\jniopencv_core.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(Unknown Source)
    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 com.googlecode.javacpp.Loader.loadLibrary(Loader.java:566)
    at com.googlecode.javacpp.Loader.load(Loader.java:489)
    at com.googlecode.javacpp.Loader.load(Loader.java:431)
    at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:453)
    at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:97)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:453)
    at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:85)
    at com.googlecode.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:174)
    at VideoPanel.run(VideoPanel.java:163)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: no opencv_core244 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.googlecode.javacpp.Loader.loadLibrary(Loader.java:593)
    at com.googlecode.javacpp.Loader.load(Loader.java:481)
    ... 13 more

我一直在寻找解决问题的方法。我遇到的大多数主题都带有不满意的链接错误,例如我收到的链接错误,一直试图使它第一次在IDE中运行,而这里不是这种情况。我认为我的依赖关系在构建路径中的库中是正确的,因为当我在已安装所有内容的计算机上运行时,可以使其完美运行,但我仍然相信我在构建过程中出错了。

我再次尝试使它在未安装OpenCV / JavaCV的计算机上运行。任何帮助将不胜感激。


问题答案:

如果opencv未安装在目标计算机上,则需要交付必要的opencv的dll文件并设置相应的库路径,这opencvjavacv

例如:

jar yourapp.jar -Djava.library.path="/path/to/OpenCV/library"


 类似资料:
  • OBS:我已经将opencv构建为静态库: cmake-DBUILD_SHARED_LIBS=OFF.

  • 使用命令获取此错误: jar是用mvn clean包和mvn安装构建的 聚甲醛

  • 我遵循这个指南: http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html 但我仍然得到这个错误: E/AndroidRuntime(916):java.lang.未满足链接错误:无法从加载器加载opencv_java248dalvik.system.P

  • 我正在使用JPackage(OpenJDK 15.0.1)为Windows制作一个可移植的可执行文件。我尝试了下面的命令,但我双击了生成的exe文件,显示了安装程序窗口。它似乎不是可移植的可执行文件,而只是安装程序。 有什么办法可以用JPackage制作一个不用安装就可以使用的可执行文件?

  • 问题内容: 我想创建一个简单的JNI层。我使用Visual Studio 2008创建了一个dll(带有DLL作为选项的Win 32 Console Application项目类型)。我在调用本地方法时收到此异常: 生成的头文件是: 实现文件是: Java文件是: 当我调用本地方法“ Hello”时,我得到执行。 我观察到的另一件事是,当我使用以下命令在命令行中进行编译时:“ cl -I” C:\

  • 步骤1:在此基础上,我使用构建了一个包含所有依赖项的独立jar。 pom.xml 将方法添加到runner类,并根据this、this和this传递cmdline arg。 如何通过cmdline args指向JAR中的目录?