NoClassDefFoundError после обновления IntelliJ IDEA
Недавно я создал новый проект, используя IntelliJ IDEA и Gradle для управления зависимостями. После разрешения всех зависимостей, необходимых для проекта, и запуска его я получаю следующую ошибку:
java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
at com.some.fancy.name.Application.main(Application.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
Проблема возникает только с классами из разрешенных зависимостей (я пробовал также с простым main
программа с использованием Cache
из Гуавы). Класс, вызывающий ошибку, выглядит следующим образом:
@SpringBootApplication
public class Application {
public static void main(String... args) {
SpringApplication.run(Application.class, args);
}
}
Все поля отображаются в правильном цвете (аннотации желтые, ничего не красного), IntelliJ имеет все разрешенные зависимости в External Libraries
каталог. Я использую зеленую стрелку "запустить", чтобы начать проект.
При использовании gradle из командной строки, создании толстой банки, тогда все работает нормально. Я уже попробовал "Invalidate Caches/Restart", несколько раз вытащил проект из репозитория, очистил кэши Gradle, вручную удалил все зависимости, попытался запустить его с помощью Community Edition, Ultimate Edition, запустив старые проекты, которые уже работали некоторое время назад (и не работают сейчас).
Может ли это быть как-то связано с обновлением IntelliJ IDEA до 2016.3.4, сборка 163.12024.16?
3 ответа
Это известная проблема в IntelliJ IDEA, характерная для Gradle 3.4 и более поздних версий:
- IDEA-167412 Gradle 3.4-rc-1 меняет зависимости компиляции на предоставленные
- оригинальный отчет об ошибке в проекте Gradle с более подробной информацией
- комментарий ответственного разработчика относительно опции "Создать модуль для набора источников" и как работает интеграция Gradle в IntelliJ IDEA
Это уже исправлено в IntelliJ IDEA 2017.1 и 2016.3.6.
Вы также можете использовать Gradle 3.3 или старше в качестве обходного пути, если не можете или не хотите обновлять IntelliJ IDEA.
У меня была такая же проблема, я получил указанную ниже ошибку из приложения весенней загрузки, которое за день до этого работало нормально. Я использую IntelliJ 2020.3, Gradle 6.5.1. Я подозреваю, что репозиторий m2 мог быть поврежден.
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
После множества попыток из моего IntelliJ я попробовал bootRun. [в дереве градиентов вы можете найти это в разделе Задачи> приложение> bootRun], и это сработало