在Maven中无法在运行时找到类

时间:2015-10-24 01:57:23

标签: java maven-2 maven-plugin maven-assembly-plugin

我是Maven的新手,我正在努力学习如何使用它。我的依赖关系如下:

<dependency>
         <groupId>com</groupId>
         <artifactId>phidgets</artifactId>
         <version>2.1</version>
         <scope>system</scope>
         <systemPath>${project.basedir}/src/phidget21.jar</systemPath>
</dependency>

我使用mvn install:file-install安装了依赖项。之后,该项目与mvn compile编译良好。但是,当我尝试mvn exec:java -Dexec.mainClass="myApp"时,它无法找到phidget21.jar中的类并抛出ClassNotFoundException

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:0)

简短的回答,解决了您的问题但不是最佳做法

您需要将exec插件配置为使用system作用域依赖项,默认情况下使用runtime

您可以在POM中配置它,也可以在命令行中使用-Dexec.classpathScope=system

话虽如此,mvn install:install-file在您的情况下完全是多余的,因为system - 范围内的依赖关系永远不会通过存储库解析。

正确的方法:

由于您已宣布成为Maven新手,我强烈建议您除非绝对必要,否则不要使用system - 作用域依赖项;它们使您的构建更不便携。

您对mvn install:install-file的调用意味着您可以完全取消<scope><systemPath>标记,并且按照您的意愿工作。 Maven将通过存储库解决您的依赖关系。