Spring tomcat找不到外部jar-java.lang.NoClassDefFoundError:org/opencv/core/core
我正在尝试为运行在Tomcat8.5服务器上的SpringRESTAPI设置openCV 在提出问题之前,我尝试了几件事: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")
- 我将opencv添加到构建路径
- 我将opencv库添加到java项目的src/WEB-INF/lib中(我必须自己创建)
- 我尝试使用maven存储库:OpenPnp org.openpnp opencv 3.2.0-0
@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,请尝试以下操作 以下是我在不同场合的表现:
我希望上述任何一种解决方案也能对您起作用。因此我最终解决了这个问题。 我没有下载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();