我正在使用https://github.com/patternconsulting/opencv将 opencv 3.2.0 包含在我的 maven java 项目中。
我面临的问题是,当我使用 mvn install
生成 jar 文件,然后运行 jar 文件 java -jar app.jar
我得到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: nu/pattern/OpenCV
at com.example.Application.<clinit>(Application.java:21)
Caused by: java.lang.ClassNotFoundException: nu.pattern.OpenCV
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
下面是我的 pom.xml 文件的摘录
<dependency>
<groupId>org.openpnp</groupId>
<artifactId>opencv</artifactId>
<version>3.2.0-1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<mainClass>com.example.Application</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
下面是我的类的摘录,其中包含 main 方法:
public class Application {
static {
OpenCV.loadShared();
}
public Application() throws Exception {
// some code here
}
public static void main(String[] args) {
new Application();
}
知道什么可能导致这种情况发生以及如何解决它吗?
谢谢
最佳答案
依赖项不会自动添加到您的 jar 文件中,只会添加到您自己的代码中。
您有多种选择,因为您不是第一个遇到此问题的人。以您当前的技能水平,我建议您考虑创建一个 uber-jar (这样您的所有依赖项也都将包含在您的 jar 文件中)。
看看https://stackoverflow.com/a/1834905/53897其中详细说明了如何从这里开始。
关于java - maven java.lang.NoClassDefFoundError : nu/pattern/OpenCV error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42204007/