最近,我使用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的Cache
的一个简单的main
程序)。导致错误的类如下所示:
@SpringBootApplication
public class Application {
public static void main(String... args) {
SpringApplication.run(Application.class, args);
}
}
所有字段都显示为正确的颜色(注释为黄色,没有任何内容是红色的),IntelliJ在External Libraries
目录中包含所有已解析的依赖项。我使用绿色的"run“箭头来启动项目。
当从命令行使用gradle时,创建一个fat jar则一切正常。我已经尝试了“无效缓存/重启”,多次从存储库中拉出项目,清除gradle缓存,手动删除所有依赖项,尝试使用Community Edition,Ultimate Edition运行它,运行较旧的项目,这些项目在一段时间前已经有效(现在不起作用)。
这可能与将IntelliJ IDEA更新到2016.3.4,build 163.12024.16有关吗?
发布于 2018-02-02 13:24:00
将gradle版本设置为3.3已更正此问题。
发布于 2021-05-09 15:50:16
我也遇到了同样的问题,从一天前工作正常的spring boot应用程序中得到了下面的错误。我使用的是IntelliJ 2020.3,Gradle 6.5.1。我怀疑我的存储库可能已经损坏了。
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
在我的IntelliJ上尝试了很多次之后,我尝试了bootRun (在树形图中,你可以在Tasks > application >bootRun下找到它),它起作用了。
https://stackoverflow.com/questions/42587487
复制相似问题