2014-10-02 93 views
0

我已经在利用Maven的IntelliJ中创建了一个控制台应用程序。从内部的IntelliJ我可以编译和运行没有问题的应用程序...可以在IntelliJ中运行Maven项目,但不能从终端运行

从终端但是我执行以下命令(在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> 

在我看来,它不是在杰克逊依赖拉动但林不知道什么即时通讯在这里失踪。

回答

1

如上所述,您所遇到的问题是您的jar需要其他jar来执行。

我看到3个解决方案:

1-如上所述,当你运行该程序,添加-classpath参数

2-使用maven-JAR-插件添加的依赖关系在清单,那么你只需要在要求的地方有依赖关系来执行所有的执行。 见http://maven.apache.org/shared/maven-archiver/examples/classpath.html#aAdd

3-包你罐内的依赖与像jarjar插件:http://sonatype.github.io/jarjar-maven-plugin/

这将创建一个你独立罐子

希望它可以帮助。

1

Maven对您的运行时类路径(只有您的编译时类路径)没有影响。您需要将您的依赖关系添加到类路径中。

+0

我该怎么做? – Deslyxia 2014-10-02 20:52:54

+0

@Deslyxia:就像你将jar文件添加到类路径一样。用';'分隔它们,如果在Windows上,':'如果在Linux上。 – 2014-10-02 20:53:38

相关问题