#java #maven #intellij-idea
#java #maven #intellij-idea
Вопрос:
Недавно я клонировал проект и запустил mvn clean install
, который установил все зависимости, перечисленные в моем pom.xml
. Всякий раз, когда я открываю класс, я вижу множество инструкций import, которые пытаются импортировать сторонний класс, выделяются с ошибкой cannot resolve symbol Foo
. Когда я нажимаю Alt Enter, появляется возможность добавить библиотеку в classpath, которая полностью решает проблему — для этой библиотеки:
Это было бы прекрасно, но у меня есть много библиотек, для которых мне нужно это сделать. Есть ли способ, которым я могу сделать это массово?
Редактировать
До моего сведения было доведено, что мне не нужно делать это после mvn clean install
, если эта команда успешно завершится. Таким образом, это ошибка, которую я получаю в самой последней части моих журналов:
Exception in thread "Thread-9" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
at org.apache.tomcat.maven.plugin.tomcat7.run.RunMojo$1.run(RunMojo.java:140)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 1 more
Ответ №1:
IntelliJ имеет хорошую поддержку Maven. Вам не нужно добавлять эти зависимости в IntelliJ project вручную, если вы импортировали проект из Maven pom.xml
. Убедитесь, что вы выбрали Import project from external model
опцию при импорте.
Выполняется ли сборка вашего проекта с mvn clean install
? Если нет, убедитесь, что это так, прежде чем что-либо менять в IntelliJ. После этого повторно импортируйте проект в IntelliJ и дважды проверьте File | Settings | Build, Execution, Deployment | Build Tools | Maven
конфигурацию, например, убедитесь, что вы используете одну и ту же установку Maven в командной строке и IntelliJ.
Возможно, в вашей settings.xml
конфигурации есть что-то дополнительное, что позволяет ей работать в командной строке, но не работает в IntelliJ при запуске со встроенным Maven?
Комментарии:
1.
mvn clean install
завершается с кодом выхода 0, и все модули помечаются как успешные, но это приводитException in thread "Thread-8" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
к завершению в последнюю очередь. Возможно, это могло бы быть так.2. @Nanor всегда безопаснее исправлять ошибки и предупреждения при сборке из командной строки перед использованием IDE. В любом случае это должно работать «из коробки», если только вы не совершаете какую-то магию, например, распаковываете банки зависимостей из ZIP-файла, загруженного по HTTPS.
3. Это имеет смысл. Я посмотрю, устраняет ли исправление ошибки NoClassDefFoundError эту проблему, и если это произойдет, я приму ваш ответ.
4. @Nanor ваша ошибка связана с плагином Tomcat maven, который не является частью стандартного жизненного цикла сборки. На этом этапе я бы предпочел удалить
.idea
и.iml
файлы и явно повторно импортировать проект.