我正在使用Maven使用IntellijIDE。我有一个带有父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>
图像Modulea包括OpenCV Java包装器,ModuleB是使用Modulea的可执行Java程序(具有主类)。
编译工作正常,但是当我在发射器中设置库路径时运行模块时,我将获得Modulea的以下错误:
java.lang.NoClassDefFoundError: org/opencv/core/Core
有什么建议如何解决此问题?
好吧,我找到了我的自我。问题是,OpenCV Java包装器与系统路径一起包含。现在,我改用验证实时周期步骤中使用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中,系统路径类型的依赖性似乎是越野车。
尝试将以下依赖关系添加到您的模块中:
<dependency>
<groupId>nu.pattern</groupId>
<artifactId>opencv</artifactId>
<version>2.4.9-7</version>
</dependency>