最近我使用 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
该问题仅发生在已解决的依赖项中的类上(我也尝试了一个简单的方法)main
程序使用Cache
来自番石榴)。导致错误的类如下:
@SpringBootApplication
public class Application {
public static void main(String... args) {
SpringApplication.run(Application.class, args);
}
}
所有字段都显示正确的颜色(注释为黄色,没有任何内容是红色),IntelliJ 在External Libraries
目录。我使用绿色的“运行”箭头来启动该项目。
当从命令行使用 gradle 时,创建一个 fat jar 然后一切正常。我已经尝试过“无效缓存/重新启动”,从存储库中多次拉取项目,清除gradle缓存,手动删除所有依赖项,尝试使用社区版、终极版运行它,运行已经工作的旧项目前段时间(现在不工作)。
是否与将 IntelliJ IDEA 更新到 2016.3.4,版本 163.12024.16 有关?
这是 IntelliJ IDEA 中特定于 Gradle 3.4 及更高版本的已知问题:
-
IDEA-167412Gradle 3.4-rc-1 将编译依赖项更改为提供的
- Gradle 项目中的原始错误报告包含更多详细信息
-
负责开发商的评论关于“为每个源集创建模块”选项以及 Gradle 集成在 IntelliJ IDEA 中的工作原理
它已经固定在IntelliJ IDEA 2017.1 and 2016.3.6.
如果您无法或不想更新 IntelliJ IDEA,您还可以使用 Gradle 3.3 或更早版本作为解决方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)