最近,我使用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?
答案 0 :(得分:31)
IntelliJ IDEA中的已知问题特定于Gradle 3.4及更高版本:
它已在IntelliJ IDEA 2017.1和2016.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”下找到它)并且成功了。