我正在编写一个java应用程序(在Linux OS上),它访问网络摄像头并在JPanel上显示视频。我使用openCV库来获取它(也因为我想添加一些图像处理代码)。 我跟着this guide编译了Java的openCV库
并且我能使其工作的唯一方法是创建一个链接到我拥有相应jar文件的文件夹的用户库。 (我试图直接导入jar文件,但我有一些运行时异常,所以我放弃了。)
This是我的情况。 现在我有一个工作的应用程序(如果我在Eclipse中执行它),我想将它导出为一个jar(或者在Eclipse之外的可执行文件)。我尝试通过选择these选项来实现这一目标。
问题是,现在我想测试jar是否通过从终端执行以下命令来工作(其中Untitled.jar是导出代码的名称):
java -jar Untitled.jar
但是我收到了这个错误(我把主要问题加粗了):
线程中的异常" main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 引起:java.lang.UnsatisfiedLinkError:没有opencv_java331 java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)at java.lang.Runtime.loadLibrary0(Runtime.java:870)at java.lang.System.loadLibrary(System.java:1122)at myRefreshTest.Main.main(Main.java:8)
opencv_java331是构建openCV for Java(opencv_java331.so)后生成的.so库的名称
我尝试了几种导出程序的方法,也选择了Eclipse导出弹出窗口中的第3个选项("将所需的库复制到生成的JAR旁边的子文件夹中),然后执行
java -cp Untitled_lib/opencv-331.jar -jar Untitled.jar
但终端返回此错误:
线程中的异常" main" java.lang.UnsatisfiedLinkError:没有 java.library.path中的opencv_java331 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)at java.lang.Runtime.loadLibrary0(Runtime.java:870)at java.lang.System.loadLibrary(System.java:1122)at myRefreshTest.Main.main(Main.java:8)
所以,问题很清楚,它无法找到openCV .so库。 我试图使用选项-Djava.library.path但它不起作用(或者至少我没有正确使用它) 我不是Java专家,我无法理解如何解决这个问题。有谁知道如何解决这个问题?