2014-10-02 8 views
0

Я создал консольное приложение в IntelliJ, которое использует Maven. Изнутри IntelliJ я могу скомпилировать и запустить приложение без каких-либо проблем ...Может запускать проект Maven в IntelliJ, но не с терминала

От терминала, однако я выполнить следующие команды (в том же директории с pom.xml)

mvn Install -U 
java -classpath target/myApp-2.0-SNAPSHOT.jar MainClass 

Команда установки, кажется, создайте файл 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

Как уже говорилось, проблема заключается в том, что вашей банке нужны другие банки для выполнения.

Я вижу 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 не оказывает никакого воздействия на ваш runtime classpath (только ваш путь к классу компиляции). Вам нужно добавить свои зависимости к пути к классам.

+0

как это сделать? – Deslyxia

+0

@Deslyxia: Точно так же вы добавили свой файл jar в classpath. Разделите их на ';' if on Windows, ':' if on Linux. –

Смежные вопросы