gpt4 book ai didi

java - 导出 (Eclipse) 可执行 jar 文件中的 UnsatisfiedLinkError

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:54:58 24 4
gpt4 key购买 nike

从 Eclipse 执行时代码工作正常。我正在为 UI 使用 OpenCV 2.4.11 和 JavaFX。当我从 Eclipse 导出可执行 Jar 并从 cmd 运行它时,出现以下异常:

enter image description here

我关注了 SO 和 OpenCV 论坛上的许多帖子(1234)但是,似乎没有一个答案对我有帮助。

我已将 OpenCV jar 添加为库,并且 native 库已按照 SO 答案中的建议链接到/build/java/x64。

Java Build path

异常发生在System.loadLibrary(Core.Native_Library_Name),我检查了Native_Library_Name,OpenCV版本与我在项目中导入的版本相同。

public class CustomFrame extends Application{

@Override
public void start(Stage primaryStage){
Group root = new Group();
Canvas canvas = new Canvas(1440, 840);

ImageView imageView = new ImageView();
imageView.setFitHeight(canvas.getHeight());
imageView.setFitWidth(canvas.getWidth());
new FrameController().startCamera(imageView);

root.getChildren().addAll(imageView, canvas);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}

public static void main(String[] args)
{
// load the native OpenCV library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
launch(args);
}
}

如果有人认为我遗漏了什么,请告诉我。

最佳答案

UnsatisfiedLinkError 当应用程序尝试加载 native 库时抛出

  1. .so 在 Linux 中,
  2. .dll 在 Windows 或
  3. .dylib 在 Mac 中

并且该库不存在

具体来说,为了找到所需的 native 库,JVM 会同时查看 PATH 环境变量java.library.path 系统属性。

Sometimes if the native library was already loaded by an application and the same application tries to load it again, this can cause this error also.


How to deal with the UnsatisfiedLinkError?

首先我们必须验证System.loadLibrary 方法中传递的参数是否正确以及该库是否确实存在。请注意,不需要扩展库。因此,如果您的库名为 SampleLibrary.dll,则必须将 SampleLibrary 值作为参数传递。

此外,如果您的应用程序已经加载了库并且应用程序尝试再次加载它,则 JVM 将抛出 UnsatisfiedLinkError。此外,您必须验证 native 库是否存在于应用程序的 java.library.pathPATH 环境库 中。 如果仍然找不到库,请尝试提供 System.loadLibrary 方法的绝对路径。

为了执行您的应用程序,使用-Djava.library.path 参数来显式指定 native 库。例如,使用终端(Linux 或 Mac)或命令提示符 (Windows),通过发出以下命令来执行您的应用程序:

java -Djava.library.path= "<path_of_your_application>" –jar <ApplicationJAR.jar>

您错过了实际命令。使用以下内容

java -Djava.library.path="C:\Opencv2.1.11\opencv\build\java\x64" -jar BlurDetector.jar

java -Djava.library.path="C:\Opencv2.1.11\opencv\build\java" -jar BlurDetector.jar

代替你的命令

java -Djava.library.path="C:\Users\vivek_elango\Desktop" -jar BlurDetector.jar // you have given wrong path of your application

关于java - 导出 (Eclipse) 可执行 jar 文件中的 UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780017/

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