IntelliJ IDEA升级后的NoClassDefFoundError

Adr*_*ski 25 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
Run Code Online (Sandbox Code Playgroud)

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

@SpringBootApplication
public class Application {
    public static void main(String... args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Cra*_*der 32

这是IntelliJ IDEA中的一个已知问题,特定于Gradle 3.4及更高版本:

它已在IntelliJ IDEA 2017.12016.3.6中修复.

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

  • 同样的问题再次与2017.3 :( (4认同)
  • 只是注意以防其他人遇到同样的问题.这不是特定于Gradle 3.4,因为3.5仍然会出现问题.该修复确实有效(更新IntelliJ),因此解决方案成立. (2认同)
  • 我面临同样的问题.在我的例子中,当我使用IntelliJ/Maven编译它并通过终端(java -jar myapp.jar)运行它时,我可以运行它.但是当我尝试从IntelliJ菜单运行它时,它会转到此错误.另外,如果我用Eclipse运行它,一切运行正常.很奇怪!IDEA非常不稳定!这是我使用它超过2年后的结论,不幸的是. (2认同)