Java Class cast Exception - Spring boot [英] 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屋!