IntelliJ IDEA升级后的NoClassDefFoundError

问题描述:

最近我创建了一个使用IntelliJ IDEA和Gradle进行依赖管理的新项目。解决该项目所需的所有依赖关系,并运行它,我得到以下错误后:IntelliJ IDEA升级后的NoClassDefFoundError

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 

从解析的依赖的类只发生问题(我想它也使用Cache番石榴简单main程序)。导致错误的类是:

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

所有字段显示正确的颜色(注释是黄色的,没有什么是红色),拥有的IntelliJ中的所有External Libraries目录解析的依赖。我正在使用绿色的“运行”箭头来启动项目。

从命令行使用gradle时,创建一个胖jar然后一切正常。我已经尝试了“Invalidate Caches/Restart”,从存储库中多次提取了项目,清除了gradle缓存,手动删除了所有的依赖关系,试图使用Community Edition,Ultimate Edition运行它,运行早已运行的旧项目前段时间(现在不工作)。

它可能以某种方式与更新IntelliJ IDEA到2016.3.4,建立163.12024.16?

它在IntelliJ IDEA的一个已知的问题是具体到摇篮3.4和更高版本:

它已经是f固定在IntelliJ IDEA 2017.12016.3.6

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

+1

只是为了防止其他人遇到同样的问题。这并不是Gradle 3.4特有的,因为问题仍然存在于3.5中。该修复程序虽然(更新IntelliJ)工作,所以解决方案站立。 –

+1

我面临同样的问题。在我的情况下,我可以在IntelliJ/Maven编译时运行它,并通过终端(java -jar myapp.jar)运行它。但是当我尝试从IntelliJ菜单运行它时,会发生此错误。另外,如果我用Eclipse运行它,一切运行良好。很奇怪! IDEA非常不稳定!这是我使用它2年多后的结论,不幸的是。 –

+0

同样的问题再次与2017.3 :( –

将gradle版本设置为3.3更正了此问题。