我正在使用带有maven的IntelliJ IDE。我有一个带有父pom的项目(主模块),包括2个子模块,每个模块都有自己的pom。
<!-- main pom module part -->
<packaging>pom</packaging>
<modules>
<module>ModuleA</module>
<module>ModuleB</module>
</modules>
<!-- example for sub module pom -->
<parent>
<artifactId>main-module</artifactId>
<groupId>my.main.module</groupId>
<version>0.5.0</version>
</parent>
Image ModuleA包含OpenCV Java包装器,ModuleB是使用ModuleA的可执行java程序(具有主类)。
编译工作正常,但是当我在启动器中设置库路径运行ModuleB时,我将收到ModuleA的以下错误:
java.lang.NoClassDefFoundError: org/opencv/core/Core
有任何建议如何解决这个问题?
答案 0 :(得分:1)
好的,我找到了解决方案。问题是,opencv java包装器包含在系统路径中。现在我在validate live cycle步骤中使用maven安装插件。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>3.3.0</version>
<packaging>jar</packaging>
<file>${project.basedir}/../lib/opencv/opencv-330.jar</file>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
对我来说很好,但不是我希望它的方式......系统路径类型依赖似乎在maven中有错误。
答案 1 :(得分:0)
尝试将以下依赖项添加到ModuleA:
<dependency>
<groupId>nu.pattern</groupId>
<artifactId>opencv</artifactId>
<version>2.4.9-7</version>
</dependency>