可以在IntelliJ中运行Maven项目,但不能从终端运行

时间:2014-10-02 20:49:11

标签: java maven intellij-idea

我在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>

在我看来,它并没有拉入杰克逊的依赖关系,但我不确定我在这里失踪了什么。

2 个答案:

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

希望它可以提供帮助。