Spring Boot Java类强制转换异常- Sping Boot

o2rvlv0m  于 2023-04-30  发布在  Spring
关注(0)|答案(4)|浏览(232)
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.<init(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)
polhcujo

polhcujo1#

根据堆栈跟踪中是否存在java.base/jdk.internal.loader.ClassLoaders来判断,您使用的是Java 9或更高版本。Sping Boot 的DefaultRestartInitializer正在尝试将应用程序类加载器转换为URLClassLoader。这适用于Java 8及更早版本,但不适用于Java 9或更高版本。Sping Boot 在2中是updated。0来科普Java 9中的这一变化。
如果你想在Java 9或更高版本中使用Sping Boot ,你应该升级到Spring Boot 2。在撰写本文时,最新的版本是2。0.5,支持Java 8、9和10。Sping Boot 2.1将于今年晚些时候发布,将增加对Java 11的支持。

aiazj4mn

aiazj4mn2#

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

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

就这样!希望对你有用。

dxxyhpgq

dxxyhpgq3#

解决方案:在IDE中更改JDK版本8
我在IntelliJ idea和sts中的spring Boot 应用程序中遇到了同样的问题,但我在这个问题中找到了一个解决方案:
如果你在你的项目中使用AD集成,它属于微软,那么你需要使用java 8版本的JDK,因为目前微软AD插件不支持java 9或更高版本,它只支持java 8或更低版本。

lqfhib0f

lqfhib0f4#

在www. example中检查您的JAVA_HOME www.example.com .将$HADOOP_HOME/etc/hadoop中的JAVA_HOME值更改为hadoop-env中的java 8(export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64)值。她为我解决了这个问题。我在我的hadoop-env.sh值中定义了一个更高的java版本,而我在我的hadoop-env.sh值中定义了java 8。bashrc文件。所以保持相同的Java 8版本为我解决了这个问题。

相关问题