【问题标题】:Exception in thread "Thread-60" java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path线程“Thread-60”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 jniopencv_core
【发布时间】:2015-01-19 22:21:08
【问题描述】:

尝试使用“mvn clean install”命令构建 sikuli-slides-1.5.0,我得到了上面引用的堆栈跟踪。我正在使用 Windows 7,并尝试了我在这里提出的各种解决方案的说明,但无济于事。我的用户和系统定义变量的路径和 CLASSPATH 变量包括:

"C:\opencv\build\x64\vc10\bin"

我已经多次重启了我的机器。

此外,我在项目的构建路径中添加了 javacv.jar、javacv.windows-x86.jar、javacv.windows-x86_64.jar,并在我的 pom.xml 中添加了 javacv-0.9.jar。我还在我的 pom 中包含了 javacpp-0.9.jar。我可以在我的构建路径上直观地看到所有上述引用的 jar,并且可以将 jniopencv_core 导入到我的任何类中。任何帮助将不胜感激。在执行 JUnit 测试 AutomationExecutorExceptionTest.java 时,测试失败并创建一个必须手动关闭的孤立 java.exe 进程。

下面列出了完整的堆栈跟踪。

线程“Thread-60”java.lang.UnsatisfiedLinkError 中的异常:>java.library.path 中没有 jniopencv_core 在 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886) 在 java.lang.Runtime.loadLibrary0(Runtime.java:849) 在 java.lang.System.loadLibrary(System.java:1088) 在 org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535) 在 org.bytedeco.javacpp.Loader.load(Loader.java:410) 在 org.bytedeco.javacpp.Loader.load(Loader.java:353) 在 org.bytedeco.javacpp.opencv_core.(opencv_core.java:10) 在 org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(openc v_core.java:909) 在 org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.createFrom(o pencv_core.java:999) 在 org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.createFrom(o pencv_core.java:971) 在 org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.createFrom(o pencv_core.java:968) 在 org.sikuli.core.cv.ImagePreprocessor.createGrayscale(ImagePreprocesso r.java:43) 在 org.sikuli.core.search.TemplateMatcher.findMatchesByGrayscaleAtOrigin alResolution(TemplateMatcher.java:71) 在 org.sikuli.api.ImageTarget.getUnorderedMatches(ImageTarget.java:127) 在 org.sikuli.api.DefaultTarget.doFindAll(DefaultTarget.java:128) 在 org.sikuli.api.DefaultScreenRegion.findAll(DefaultScreenRegion.java:7 4) 在 org.sikuli.slides.api.sikuli.CrossSearchStrategy.testHypotheses(交叉 SearchStrategy.java:85) 在 org.sikuli.slides.api.sikuli.CrossSearchStrategy.perform(CrossSearchS 策略.java:39) 在 org.sikuli.slides.api.sikuli.ContextImageTarget.doFindAll(ContextImag eTarget.java:122) 在 org.sikuli.api.DefaultScreenRegion._find(DefaultScreenRegion.java:88)

   at org.sikuli.api.DefaultScreenRegion.find(DefaultScreenRegion.java:80)
   at org.sikuli.slides.api.actions.TargetAction.execute(TargetAction.java:

26) 在 org.sikuli.slides.api.actions.RetryAction.execute(RetryAction.java:51 ) 在 org.sikuli.slides.api.actions.ParallelAction$Worker.run(ParallelActio n.java:35) 在 java.lang.Thread.run(Thread.java:745)

【问题讨论】:

  • “no jniopencv_cor e”是因为您的输入或导入而导致的错误? (应该是“没有 jniopencv_core”)
  • 没错。我从命令提示符复制了它。
  • 能否请您发布您使用的导入?
  • 你的类路径是什么?
  • 你应该使用these two 我会建议更多nu.pattern 因为更接近OpenCV的C++版本,我认为它更优化

标签: java maven opencv


【解决方案1】:

您的堆栈跟踪包含以下行:

Exception in thread "Thread-60" java.lang.UnsatisfiedLinkError: no jniopencv_cor e in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)

注意jniopencv_core 之间的空格

您的某个配置文件包含一个不应包含的 空格

【讨论】:

  • 这是一个复制错误。我从命令行复制了堆栈跟踪并环绕了文本。
  • 那么我认为jniopencv_core 不在您的类路径中,或者在您的构建过程中的某处被错误地指定。
  • 我是否需要专门将每个单独的 *.dll 添加到我的类路径中?我在指向 vc10\bin 目录的用户和系统属性级别设置了 Path 和 CLASSPATH。
【解决方案2】:

javacv 文件的说明非常混乱。问题是我必须真正分解 jar 文件的内容并在目录中公开 DLL。与 javacv jar 一起打包的说明指示我只需将二进制文件放在类路径上。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我通过在我的 Sikuli Slides 1.5.1 的 Maven 项目中添加以下依赖项解决了这个问题:

    GroupId:org.bytedeco.javacpp-presets AritfactId:opencv 版本:2.4.9-0.9 类型:罐子 分类器:windows-x86_64

    就我而言,我使用的是 Windows 7 64 位。添加此依赖项后,我能够成功构建 Sikuli 幻灯片。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-30
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多