IntelliJ, похоже, не прикладывает предоставленную зависимость от пути к классам при запуске, однако я могу сделать это успешно в Eclipse.
Как мне было бы намного удобнее, как я могу это сделать в IntelliJ?Определенная зависимость maven вызовет NoClassDefFoundError в intellij?
ответ
Работает ли он в Maven через командную строку? Поведение кажется правильным. Eclipse плохо справляется с классом, так что, я думаю, он все еще делает.
Существует разница, если вы запускаете что-то в Test source root
or Source root
, поскольку объем предоставляется доступна только на компиляции и тест CLASSPATH.
Если запустить тест, или основной метод в Test source root
, то он может использовать предоставленную зависимость, но если вы попытаетесь выполнить что-то (через IntelliJ или exec-maven-plugin
) в Source root
, то он потерпит неудачу на ClassNotFoundException.
У меня такая же проблема. Intellij не включает предоставленные зависимости в pathpath. См. this source. Лучшее решение, которое я нашел, - запустить его как приложение maven, используя цель exec:java
. Например:
exec:java -Dexec.classpathScope=compile -Dexec.mainClass=com.splout.db.integration.NShardEnsemble -Dexec.args=4
Лучшие решения приветствуются.
You может выполнять все, что угодно, в ваших '' 'test sources''', и все будет работать нормально. – Meo
показать нам свою pom.xml и некоторый вывод из "МВН компиляции", пожалуйста – JimHawkins