gpt4 book ai didi

java - System.loadLibrary() 错误 - 无法指定相对或绝对路径

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:29 25 4
gpt4 key购买 nike

我在指定 x64 OpenCV DLL 的路径时遇到问题。

我正在使用

static{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}

加载 OpenCV x64 DLL,它在 NetBeans 中运行良好(使用 -Djava.library.path=".\opencv\x64" 但不能在 IDE 之外使用 .jar。

运行构建的 .jar(带或不带 -Djava.library.path=".\opencv\x64")会抛出:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no 
opencv_java330 in java.library.path

这里有无数关于此问题的问题和解决方案。

但是,它们都需要包含 DLL 的文件夹的相对路径 - 我无法指定 x64 OpenCV DLL 所在文件夹的绝对路径或相对路径。

System.loadLibrary("%UserProfile%/Documents/NetBeansProjects/ProjectName/opencv/x64/");

抛出一个

java.lang.UnsatisfiedLinkError:java.library.path 中没有 %UserProfile%/Documents/NetBeansProjects/ProjectName/opencv/x64/ 错误。

文件夹的直接路径会引发相同的错误。

System.loadLibrary("/opencv/x64/"); (带或不带前导点)也会引发相同的错误。

任何有关此问题的帮助将不胜感激。

最佳答案

可能您的参数顺序错误。下面是一个工作示例。

假设以下结构。

bin\
dist\
opencv\x64\opencv_java320.dll
src\foo\Test.java

测试.java

package foo;
class Test {
public static void main(String[] args) {
// note: the parameter is the library name, no extension, no path
System.loadLibrary("opencv_java320");
System.out.println("library loaded");
}
}

文件系统上的类路径

  • 编译

    javac -d bin/ src/foo/Test.java
  • 运行

    java -cp bin -Djava.library.path=opencv/x64 foo.Test
  • 输出

    library loaded

JAR 文件中的类

  • 创建可执行的 JAR 文件

    echo Main-Class: foo.Test > manifest.mf
    jar cfm dist/application.jar manifest.mf -C bin/ .
  • 使用相对路径执行 JAR 文件

    java -Djava.library.path=opencv/x64 -jar dist/application.jar
  • 执行当前目录下的JAR文件

    cd dist
    java -Djava.library.path=../opencv/x64 -jar application.jar
  • 两个 JAR 执行的输出

    library loaded

关于java - System.loadLibrary() 错误 - 无法指定相对或绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46427962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com