我在IntelliJ中创建了一个使用Maven的控制台应用程序。从IntelliJ中我可以编译并运行应用程序而没有任何问题...
从终端然而我执行以下命令(在与pom.xml相同的目录中)
mvn Install -U
java -classpath target/myApp-2.0-SNAPSHOT.jar MainClass
install命令似乎没有任何问题地构建jar文件。第二个命令给出了以下错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonParseException
在我的pom.xml中,我的依赖关系如下
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.5.0</version>
</dependency>
</dependencies>
在我看来,它并没有拉入杰克逊的依赖关系,但我不确定我在这里失踪了什么。
答案 0 :(得分:1)
Maven对运行时类路径没有影响(只有编译时类路径)。您需要将依赖项添加到类路径中。
答案 1 :(得分:1)
如上所述,你遇到的问题是你的jar需要执行其他jar。
我看到3个解决方案:
1-如上所述,运行程序时,添加-classpath参数
2-使用maven-jar-plugin在清单中添加依赖项,然后您只需要在请求的位置拥有所有执行的依赖项。 见http://maven.apache.org/shared/maven-archiver/examples/classpath.html#aAdd
3-使用jarjar:http://sonatype.github.io/jarjar-maven-plugin/
之类的插件将jar中的依赖项打包这会创建一个独立的jar
希望它可以提供帮助。