Spring tomcat找不到外部jar-java.lang.NoClassDefFoundError:org/opencv/core/core

Spring tomcat找不到外部jar-java.lang.NoClassDefFoundError:org/opencv/core/core,spring,maven,opencv,tomcat,jakarta-ee,Spring,Maven,Opencv,Tomcat,Jakarta Ee,我正在尝试为运行在Tomcat8.5服务器上的SpringRESTAPI设置openCV 在提出问题之前,我尝试了几件事: 我将opencv添加到构建路径 我将opencv库添加到java项目的src/WEB-INF/lib中(我必须自己创建) 我尝试使用maven存储库:OpenPnp org.openpnp opencv 3.2.0-0 我的测试代码如下: @RestController 公共类OpencvController{ @GetMapping("/opencv")

我正在尝试为运行在Tomcat8.5服务器上的SpringRESTAPI设置openCV

在提出问题之前,我尝试了几件事:

  • 我将opencv添加到构建路径
  • 我将opencv库添加到java项目的src/WEB-INF/lib中(我必须自己创建)
  • 我尝试使用maven存储库:OpenPnp

    org.openpnp opencv 3.2.0-0

我的测试代码如下: @RestController 公共类OpencvController{

    @GetMapping("/opencv")
    public  String opencv() {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.println("mat = " + mat.dump());
        return null;
    }

}
但是我不断地遇到错误:“java.lang.NoClassDefFoundError:org/opencv/core/core”,我对如何解决这个问题没有任何线索,任何帮助都将不胜感激。
提前感谢您

这是eclipse中的一个典型问题。我已经多次遇到这个问题,但还没有找到任何可靠的解决方案

首先为您的项目创建WAR,并检查您是否能够在WAR中找到opencv.jar。不要在tomcat的部署下进行检查。使用maven安装创建WAR。

如果在创建的war中找不到opencv、jar,请再次检查POM或尝试添加外部jar。 但如果您确实在创建的WAR中找到了opencv.jar,请尝试以下操作

以下是我在不同场合的表现:

  • maven更新您的项目
  • 清理项目(确保已启用自动生成)
  • 在工作空间中关闭项目并重新打开它(我知道这听起来很傻,但对我来说很有用)
  • 创建项目的war,然后用生成的war的.class文件替换Tomcat独立目录中已部署war下的.class文件。然后通过eclipse重新启动Tomcat服务器
  • 对于第1-3点,请确保清理tomcat目录下的部署


    我希望上述任何一种解决方案也能对您起作用。

    因此我最终解决了这个问题。 我没有下载jar并尝试将其放在maven项目中,而是在POM中添加了一个显然非官方的maven原型:

    <!-- https://mvnrepository.com/artifact/org.openpnp/opencv -->
    <dependency>
        <groupId>org.openpnp</groupId>
        <artifactId>opencv</artifactId>
        <version>3.2.0-0</version>
    </dependency>
    

    正如这里所建议的:
    它成功了!感谢大家的帮助

    检查WAR-after包是否包含web-inf/lib/opencv.jar?我刚刚检查过,WAR中没有包含opencv.jar。我在eclipse项目中添加了web-inf/lib文件夹,我在opencv.jar中添加了这些文件夹,但MAVEN或Tomcat显然没有考虑……添加
    opencv.jar
    你自己?听上去你在使用Maven时做了一些错误的事情,你应该让Maven通过配置
    pom.xml
    为你的eclipse项目包含
    opencv.jar
    来为你添加它……我再次尝试使用Maven,这次opencv.jar在WEB-INF/lib文件夹中,但错误现在不同了:“java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java342“请看。请注意,接受的答案不是正确的解决方案。非常感谢您的明确答案,但对我来说并不奏效。我实际上发现了问题所在:在使用maven时,opencv工件显然不是官方的,我在代码中加载库时使用的语法是错误的。我更改了System.loadLibrary(Core.NATIVE_LIBRARY_NAME);到nu.pattern.OpenCV.loadShared();
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    
    nu.pattern.OpenCV.loadShared();