【发布时间】:2017-05-15 19:08:55
【问题描述】:
首先,我有一个在 main 方法中运行的 OpenCV 的基本示例。 但是,如果我在 Spring Web Controller 中使用 OpenCV,则会引发错误。
在 Tomcat 服务器、STS(Spring Tool Suite)内运行以下代码时,我收到了 UnsatisfiedLinkError,并将问题归结为以下代码:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
CascadeClassifier cascadeClassifier = new CascadeClassifier();
服务器和“主”应用程序的运行配置包含指向 OpenCV DLL 的 VM 参数:
-Djava.library.path="C:\opencv\build\java\x64;C:\opencv\build\x64\vc10\bin"
作为参考,我还在下面包含了堆栈跟踪的相关位:
org.springframework.web.util.NestedServletException: Handler processing failed;
nested exception is
java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0()J
...
Caused by: java.lang.UnsatisfiedLinkError:
org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0()J
at org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Native Method)
at org.opencv.objdetect.CascadeClassifier.<init>(CascadeClassifier.java:38)
at com.immersion.test.controllers.SimpleController.createClassifier(SimpleController.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
注意:我在 several StackOverflow 线程中读到 UnsatisfiedLinkError 的主要原因是缺少 System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 调用。这显然不是这里的情况,因为它是在抛出异常的上方被调用的。
【问题讨论】:
标签: java tomcat opencv java-native-interface spring-tool-suite