我试图将opencv添加到我的Spring Boot / Maven项目中。
为了使用opencv库,我必须在java.library.path中提供本机库。
我在Eclipse VM参数中添加了以下命令:
-Djava.library.path="D:/Projects/lib/opencv/x86/opencv_java2411.dll"
并得到以下例外:
java.lang.UnsatisfiedLinkError: no opencv_java2411 in 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)
我还尝试直接从我的代码访问java.library.path
:
System.out.println(System.getProperty("java.library.path"));
并显示提供的路径:D:/Projects/lib/opencv/x86/opencv_java2411.dll
我做错了什么?
答案 0 :(得分:1)
-Djava.library.path
不应指向DLL,而应指向包含DLL的文件夹。例如-Djava.library.path=D:/Projects/lib/opencv/x86/
答案 1 :(得分:1)
我也遇到了同样的问题,因此我在下面做了解决。当我运行java -jar openCV = project jar时,我遇到了与下面相同的异常
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: no opencv_java320 in 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 com.wso2telco.rnd.CamCapture.<init>(CamCapture.java:47)
at com.wso2telco.rnd.CamCapture.main(CamCapture.java:144)
... 5 more
所以我做了以下更改.java类的项目,我有这行
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.loadLibrary("opencv_java320");
我删除了这两行,并添加了下面的行
nu.pattern.OpenCV.loadLocally();
为了添加该行,您需要在pom.xml中具有这些依赖项
<dependency>
<groupId>org.openpnp</groupId>
<artifactId>opencv</artifactId>
<version>3.2.0-0</version>
</dependency>
<dependency>
<groupId>nu.pattern</groupId>
<artifactId>opencv</artifactId>
<version>2.4.9-4</version>
</dependency>
完成上述修改后,我可以使用以下命令从终端运行程序 mvn exec:java -Dexec.mainClass =“ com.rnd.CamCapture”
答案 2 :(得分:1)
在Windows上,设置包含opencv_java ***。dll的环境路径
data : $('#Create').serializeArray()
与Linux或其他操作系统相同。