- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
从 Eclipse 执行时代码工作正常。我正在为 UI 使用 OpenCV 2.4.11 和 JavaFX。当我从 Eclipse 导出可执行 Jar 并从 cmd 运行它时,出现以下异常:
我关注了 SO 和 OpenCV 论坛上的许多帖子(1、2、3、4)但是,似乎没有一个答案对我有帮助。
我已将 OpenCV jar 添加为库,并且 native 库已按照 SO 答案中的建议链接到/build/java/x64。
异常发生在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 库时抛出
.so
在 Linux 中,.dll
在 Windows 或 .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.path
或 PATH 环境库
中。 如果仍然找不到库,请尝试提供 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/
我有一个旨在在 Linux 环境中运行的 java 应用程序,它是使用 Opencv 和 Eclipse - Ubuntu 14.04 开发的。它在 Eclipse 中运行良好,并在导出时生成一个 .
我有一个 Android 项目,它使用具有相互依赖关系的库: Android 应用程序依赖于以下原生库 模块 tess-2(包含 tesseract 和 leptonica) 模块 opencv4an
我正在开发一个需要使用.so库的项目(ubuntu 18.04),当我将java代码放在/src文件夹中时一切正常(我使用的是IntelliJ Idea),但是在我移动之后我的代码放入命名包(smut
我创建了一个使用 autohotkey.dll 库的 jar 文件。 Jar 在我的主电脑和笔记本电脑上运行顺利,但现在我尝试在新安装了 Windows 10 的电脑上使用它,但收到此错误: Exce
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我创建了一个使用 google or-tools 的 spring 应用程序。为此,我使用 System.loadLibrary("jniortools") 导入 jniortools。当我提供 .d
我正在尝试使用我下载的小程序。使用时出现以下错误 Can't load library 'friend'. java.lang.UnsatisfiedLinkError:no friend in ja
我知道捕获错误不是一个好的做法,但在这种情况下,这样做很重要。我正在尝试运行一个包含游戏一部分的 jar,但它给了我一个 unsatisfiedlink 错误,但这是有趣的部分:我正在使用这段代码:
我正在尝试创建Java软件,该软件允许我启动程序并通过ActiveXComponent对其进行控制。为了使用ActiveXCompnent,我下载了一个名为“ jacob-1.18”的JAR文件。当我
我已经完成了大部分GWT MVP风格的测试,而没有测试小部件。我希望能够构建更复杂的小部件并对其进行良好的测试,而无需使用GwtTestCase(缓慢)。 出于好奇,我尝试了一个非常简单的测试。给一个
我正在使用 Proycon 将 .class 反编译为 .java,在我的库目录中包含 jd-core-java-1.0.jar 文件,但是当我编译 Main 类时它抛出异常 Exception in
我正在编写一个使用JNI的程序,当我在我的计算机上运行它时它工作正常,但如果我尝试在另一台计算机上运行它,它会抛出UnsatisfiedLinkError,说它找不到依赖库。我使用 Eclipse,并
我正在使用 javacpp 从 Java 访问 cpp。 我已经尝试过文档中提供的示例 cpp代码: CompletableFuture futureInC(){ @StdFuture
Error is :Exception in thread "main" java.lang.UnsatisfiedLinkError: jpcap.JpcapCaptor.getDeviceLi
我正在尝试使用 JNI 向 Java 公开 C++ 功能。我试图首先显示一个简单的消息框,只是为了确保一切正常。但是,我得到了一个 UnsatisfiedLinkError 异常被抛出(当我调用函数时
尝试使用来自 here 的代码我试图合并这两个类,以便最终得到 ulaw 音频数据的 inputStream。所以我像这样编辑了 UlawEncoderInputStream: private Mic
我正在使用 Android Studio 3,并尝试在我的设备上使用 OpenCL。APK 编译失败: java.lang.UnsatisfiedLinkError: dlopen failed: l
我正在开发 SIP 基础应用程序来调用和接听电话我对一个开源项目进行了分析 Sipdroid.除此之外,我制作此应用程序以支持 g729 编解码器。该应用程序工作正常,但是当我修改应用程序的包名称时,
我知道这个问题已经被问过了,但我没有找到任何方法来阅读现有代码来找到解决我的问题的方法。我的一些应用程序用户对不同类型的 UnsatifiedLinkError 有经验: Caused by: jav
我在 Windows 7 中使用 IntelliJ,在最近对我的开发系统(不是设备)进行了突然更改后,我陷入了 UnsatisfiedLinkError 的困境。由 System.loadLibrar
我是一名优秀的程序员,十分优秀!