Java类强制转换异常-春季启动

时间:2018-09-18 11:29:58

标签: spring-boot

  

线程“ main”中的异常java.lang.ClassCastException:   java.base / jdk.internal.loader.ClassLoaders $ AppClassLoader不能为   转换为java.base / java.net.URLClassLoader   org.springframework.boot.devtools.restart.DefaultRestartInitializer.getUrls(DefaultRestartInitializer.java:93)     在   org.springframework.boot.devtools.restart.DefaultRestartInitializer.getInitialUrls(DefaultRestartInitializer.java:56)     在   org.springframework.boot.devtools.restart.Restarter。(Restarter.java:138)     在   org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:537)     在   org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartedEvent(RestartApplicationListener.java:68)     在   org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:45)     在   org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166)     在   org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138)     在   org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121)     在   org.springframework.boot.context.event.EventPublishingRunListener.started(EventPublishingRunListener.java:63)     在   org.springframework.boot.SpringApplicationRunListeners.started(SpringApplicationRunListeners.java:48)     在   org.springframework.boot.SpringApplication.run(SpringApplication.java:304)     在   org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)     在   org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)     在com.rme.hub.RmeApplication.main(RmeApplication.java:24)

3 个答案:

答案 0 :(得分:7)

从堆栈跟踪中java.base/jdk.internal.loader.ClassLoaders的存在来看,您正在使用Java 9或更高版本。 Spring Boot的DefaultRestartInitializer试图将应用程序类加载器转换为URLClassLoader。这在Java 8及更低版本中有效,但在Java 9或更高版本中无效。 Spring Boot在updated中已采用2.0版本,以应对Java 9中的这一更改。

如果您想将Spring Boot与Java 9或更高版本一起使用,则应升级到Spring Boot2。撰写本文时,最新版本是2.0.5,它支持Java 8、9和10。Spring Boot 2.1将于今年晚些时候发布,它将增加对Java 11的支持。

答案 1 :(得分:0)


<块引用>

解决方案:在您的 IDE 中更改 JDK 版本 8



我在 IntelliJ idea 和 sts 的 spring boot 应用程序中遇到了同样的问题,但我在该问题中找到了一个解决方案:

如果您在项目中使用 AD 集成并且它属于 Microsoft,那么您需要使用 java 8 版本的 JDK,因为当前 Microsoft AD 插件不支持 java 9 或更高版本,它将仅支持 java 8 或更低版本版本

答案 2 :(得分:0)

我在 Eclipse 上遇到了这个问题,并通过执行以下步骤解决了:

  • 首先下载 java 8(如果没有)然后安装
  • 其次,我不确定您是否必须这样做,但只是这样做。我通过右键单击桌面创建 JAVA_HOME 路径 -> 属性 -> 高级系统设置 -> 高级选项卡 -> 环境变量 -> 在用户变量和系统变量中添加 JAVA_HOME -> 单击新建 -> 变量主页是“JAVA_HOME”,变量值可以留空 -> 浏览目录 -> 指向你的 jdk 文件夹(例如:我的是 C:\Program Files\Java\jdk1.8.0_291)
  • 三、进入eclipse->进入window选项卡->在左侧菜单上选择java->Installed JREs->在默认eclipse中已经有jre目录->点击它然后点击复制->更改目录到你自己的 jre 目录(例如:C:\Program Files\Java\jre1.8.0_291)
  • 第四:返回java菜单,选择编译器选项->然后在右侧->将编译器合规级别更改为1.8。

仅此而已! 希望对你有用。