【问题标题】:NO opencv_java300 in java.library.path [duplicate]java.library.path 中没有 opencv_java300 [重复]
【发布时间】:2015-09-25 23:55:18
【问题描述】:

提前谢谢..

我有一个项目使用 opencv-300.jar 作为外部库。我已经在 eclipse 和 natBeans 中尝试过这个。 当我从 IDE 本身运行我的项目时,它都可以成功运行。 我希望我的项目将其导出为可运行(或可执行)的 jar。 我将我的 opencv_java300.dll 文件放在带有主 java 文件的源文件夹中,并在

中给出了它的名称
 System.loadLibrary("opencv_java300");

我将 opencv-300.jar 放在外部 jar 库和主程序所需的所有其他文件中。从 IDE 运行时它可以成功运行,但是当我创建可执行 jar 时,它会显示错误

   Exception in thread "main" java.lang.UnsatisfiedLinkError: no     
   opencv_java300 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 CropFaceImage.main(CropFaceImage.java:27)

请告诉我有没有办法在程序本身中提供 java.library.path。即使我删除了外部库中 opencv_java300.dll 文件的路径,我的项目也能成功运行。

【问题讨论】:

标签: java opencv jar


【解决方案1】:

您可以使用下面的命令行参数并调用具有 main 的类

java -Djava.library.path="Folder which contains your dll" ....

【讨论】:

  • 在创建 jar 文件命令提示符时是否有效...请告诉我如何使用此命令创建包含外部库(如其他 jar 文件..opencv-300.jar)的 jar 文件。
  • 这在从准备好的 jar 文件执行你的类时有效。每当您在 jar 文件中调用该类时,都需要传递上述参数。
  • 我想创建一个不带任何参数的可运行 jar 文件。有没有办法在程序本身或从命令提示符创建 jar 文件时给出这个命令。
  • 我不确定这是否可能。但是,您可以编写一个 bat 文件,该文件又使用上述参数调用可运行的 jar。您可以使用 bat 文件代替可运行的 jar。
  • 显示错误找不到或无法加载主类 CrooppingTool2.jar
【解决方案2】:

我试图传递包含 opencv 路径的命令,但我没有找到其他方法。不知何故,我尝试了一些创建我的 jar 并且它正常运行的东西。我复制了 opencv_java300.dll 文件并将其放在我的 jar 文件旁边的目录中,并对所有支持文件执行相同操作。 我使用以下代码来做到这一点。

String opencvpath = System.getProperty("user.dir") + "\\files\\";
String libPath = System.getProperty("java.library.path");
System.load(opencvpath + Core.NATIVE_LIBRARY_NAME + ".dll");

【讨论】:

  • 这对我来说不能正常工作。我使用 load() 而不是 loadLibrary() 并在 DLL 文件的路径前添加了 Core.NATIVE_LIBRARY_NAME。最后在末尾加上.dll扩展名,形成DLL文件的绝对路径。我使用的行是 "System.load("D:\\OpenCV\\opencv-3.0.0\\opencv\\build\\java\\x64\\"+Core.NATIVE_LIBRARY_NAME+".dll");"请记住根据您的系统使用 x64 或 x86。我没有复制 DLL 文件。
【解决方案3】:

当我在 Eclipse 中配置本机库时,我解决了我的问题。 您需要选择一个库引用您的操作系统平台。

看这里:adding openCV to java buildpath in eclipse

【讨论】:

  • 不是eclipse,是运行可执行jar
【解决方案4】:

我遇到了同样的问题,通过切换 JRE 系统库解决了。似乎只有使用 jre1.8.0_65 才会出现问题。我使用 jre1.8.0_25、jre1.8.0.45 和 jre1.8.0.66 一切正常

【讨论】:

    【解决方案5】:

    我能够通过从代码中删除我的System.loadLibrary("opencv_java300"); 并将 jar 文件添加到我的 build.xml 中的类路径来修复错误:

    <jar destfile="program.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="com.src.program"/>
            <attribute name="Class-path" value="opencv-300.jar"/>
        </manifest>
    </jar>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-04
      • 2011-07-02
      • 2010-10-29
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      相关资源
      最近更新 更多