java - 使用 OpenCV 进行 Spring 启动

标签 java spring maven opencv tomcat

我正在尝试在 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 库(例如 .dlllib*.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/

相关文章:

java - Java中访问私有(private)成员

java - 访问 Azure 端点时遇到 "java.net.ConnectException: A route to the remote host is not available"

java - 获取当前用户失败 : no RequestContext available

java - Spring Injection - 线程安全

java - Spring bean中如何释放资源?

maven - sonar.profile 在 4.5.4 Sonarqube 中已弃用

java - 为什么对Hadoop的这种Maven依赖性阻止JSP进行编译?

java - 如何更改 Maven 依赖项中的日志级别

java - JSP - 包含资源文件夹中的文件

java - 事务不会回滚@Hibernate