我正在尝试在 Spring boot 项目中使用 OpenCV 作为 war 文件部署到 Tomcat 服务器。
无论我尝试什么,我都会得到这个:
java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
我有一个经典的 Maven 项目,在其中测试了 OpenCV 代码,只要将 opencv_java310
放入项目类路径中,它就可以正常工作。我做了同样的事情,并将这个 jar 添加到我的 Spring boot 项目的类路径中,并将其添加到 src/main/webapp/WEB-INF/lib 目录中(以便使其在应用程序服务器)。
在 Tomcat 上使用 OpenCV 还需要做什么?我已经无计可施了..
编辑:在 Junit 测试中加载 open-cv 核心库时,它会正确加载:
@Test
public void testOpenCV() {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
但是如果我在 Tomcat 上运行应用程序时执行相同的操作,则会出现异常。
最佳答案
这不是在谈论 JAR 文件 - 看起来 JAR 文件正在正确加载。然而,从错误消息来看,OpenCV 使用一个或多个 native 库(例如 .dll
或 lib*.so
文件),并且找不到这些库。
预计该属性 java.library.path
将指向包含 native 库 opencv_java310
的位置,但事实并非如此。我不是 100% 确定如何使用 Eclipse 和 Tomcat 解决此问题,但您可能需要找到一种方法来 (a) 在 Tomcat 上设置属性,或 (b) 查看属性的值并放置 native 该位置的库(您可以使用 System.getProperty("java.library.path");
获取它)。快速检查表明您可以将其放入 tomcat/shared/lib
.
记住,这是.dll
(对于 Windows)或 .so
(对于 OSX、Linux、Unix)文件,不是 JAR 文件。
关于java - 使用 OpenCV 进行 Spring 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35103340/