Java Class cast Exception - Spring boot [英] Java Class cast Exception - Spring boot

查看:19
本文介绍了Java Class cast Exception - 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)

Exception in thread "main" java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getUrls(DefaultRestartInitializer.java:93) at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getInitialUrls(DefaultRestartInitializer.java:56) at org.springframework.boot.devtools.restart.Restarter.(Restarter.java:138) at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:537) at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartedEvent(RestartApplicationListener.java:68) at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:45) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121) at org.springframework.boot.context.event.EventPublishingRunListener.started(EventPublishingRunListener.java:63) at org.springframework.boot.SpringApplicationRunListeners.started(SpringApplicationRunListeners.java:48) at org.springframework.boot.SpringApplication.run(SpringApplication.java:304) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) at com.rme.hub.RmeApplication.main(RmeApplication.java:24)

推荐答案

根据堆栈跟踪中 java.base/jdk.internal.loader.ClassLoaders 的存在判断,您使用的是 Java 9或以后.Spring Boot 的 DefaultRestartInitializer 试图将应用程序类加载器转换为 URLClassLoader.这适用于 Java 8 及更早版本,但不适用于 Java 9 或更高版本.Spring Boot 已在 2.0 中更新以应对 Java 9 中的这一变化.

Judging by the presence of java.base/jdk.internal.loader.ClassLoaders in the stack trace, you are using Java 9 or later. Spring Boot's DefaultRestartInitializer is trying to cast the app class loader to a URLClassLoader. This works in Java 8 and earlier but does not work with Java 9 or later. Spring Boot had been updated in 2.0 to cope with this change in Java 9.

如果要在 Java 9 或更高版本中使用 Spring Boot,则应升级到 Spring Boot 2.在撰写本文时,最新版本为 2.0.5,支持 Java 8、9 和 10.Spring Boot 2.1将于今年晚些时候发布,将增加对 Java 11 的支持.

If you want to use Spring Boot with Java 9 or later, you should upgrade to Spring Boot 2. At the time of writing, the latest release is 2.0.5 which supports Java 8, 9, and 10. Spring Boot 2.1, which will be released later this year, will add support for Java 11.

这篇关于Java Class cast Exception - Spring boot的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆