如何在intellij子模块中包含opencv(maven)

时间:2017-08-31 07:02:22

标签: java maven opencv intellij-idea

我正在使用带有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

有任何建议如何解决这个问题?

2 个答案:

答案 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>