2015-05-26 2 views
5

IntelliJ, похоже, не прикладывает предоставленную зависимость от пути к классам при запуске, однако я могу сделать это успешно в Eclipse.
Как мне было бы намного удобнее, как я могу это сделать в IntelliJ?Определенная зависимость maven вызовет NoClassDefFoundError в intellij?

+0

показать нам свою pom.xml и некоторый вывод из "МВН компиляции", пожалуйста – JimHawkins

ответ

1

Работает ли он в Maven через командную строку? Поведение кажется правильным. Eclipse плохо справляется с классом, так что, я думаю, он все еще делает.

Существует разница, если вы запускаете что-то в Test source root or Source root, поскольку объем предоставляется доступна только на компиляции и тест CLASSPATH.

Если запустить тест, или основной метод в Test source root, то он может использовать предоставленную зависимость, но если вы попытаетесь выполнить что-то (через IntelliJ или exec-maven-plugin) в Source root, то он потерпит неудачу на ClassNotFoundException.

5

У меня такая же проблема. Intellij не включает предоставленные зависимости в pathpath. См. this source. Лучшее решение, которое я нашел, - запустить его как приложение maven, используя цель exec:java. Например:

exec:java -Dexec.classpathScope=compile -Dexec.mainClass=com.splout.db.integration.NShardEnsemble -Dexec.args=4 

Лучшие решения приветствуются.

+1

You может выполнять все, что угодно, в ваших '' 'test sources''', и все будет работать нормально. – Meo

0

Этот ответ основан на ответе @ Meo.

ALT + Enter создать модульный тест:

enter image description here

затем запустить его:

enter image description here