IntelliJ IDEA升级后的NoClassDefFoundError

时间:2017-03-03 20:02:35

标签: intellij-idea gradle

最近,我使用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

只有来自已解析依赖项的类才会出现问题(我也尝试使用来自Guava的main简单Cache程序。导致错误的类如下:

@SpringBootApplication
public class Application {
    public static void main(String... args) {
        SpringApplication.run(Application.class, args);
    }
}

所有字段都显示正确的颜色(注释为黄色,没有任何内容为红色),IntelliJ在External Libraries目录中具有所有已解析的依赖项。我正在使用绿色的“运行”箭头来启动项目。

从命令行使用gradle时,创建一个胖罐然后一切正常。我已经尝试过“无效缓存/重启”,从存储库中多次拉出项目,清除了gradle缓存,手动删除了所有依赖项,尝试使用Community Edition,Ultimate Edition运行它,运行已经运行的旧项目前一段时间(现在不工作)。

是否可能以某种方式将IntelliJ IDEA更新为2016.3.4,构建163.12024.16?

3 个答案:

答案 0 :(得分:31)

IntelliJ IDEA中的已知问题特定于Gradle 3.4及更高版本:

它已在IntelliJ IDEA 2017.12016.3.6中修复。

如果您无法或不想更新IntelliJ IDEA,也可以使用Gradle 3.3或更早版本作为解决方法。

答案 1 :(得分:0)

将gradle版本设置为3.3可以解决此问题。

答案 2 :(得分:0)

我遇到了同样的问题,从前一天工作正常的 Spring Boot 应用程序中得到以下错误。我使用的是 IntelliJ 2020.3,Gradle 6.5.1。我怀疑我的存储库可能已损坏。

Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication

经过我的 IntelliJ 多次尝试后,我尝试了 bootRun(在 gradle 树中,您可以在“任务”>“应用程序”>“bootRun”下找到它)并且成功了。