【Error】UnsupportedClassVersionError:Unsupported major.minor version xx.x

作者在调试SSM项目时遇到服务器启动报错,核心是UnsupportedClassVersionError。原因是高版本JDK编译的项目在低版本JRE环境运行。作者给出解决方式,如修改项目JDK版本、安装对应JDK、保证Tomcat版本一致等,还提及若仍有问题可在评论区分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题重述

今天帮同学调试一个SSM项目的时候,出现一个bug,导致服务器启动时报错,项目无法运行。这里记录下来已备自用。报错核心信息如下

Caused by: java.lang.UnsupportedClassVersionError: com/chinasofti/controller/AdminController : Unsupported major.minor version 52.0 (unable to load class com.chinasofti.controller.AdminController)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2963)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1212)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1692)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1573)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
	at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1396)
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1343)
	... 19 more

问题原因

在JavaSE API中查到对于该Error的描述如下

public class UnsupportedClassVersionError 
extends ClassFormatError

Thrown when the Java Virtual Machine attempts to read a class file and determines that the major and minor version numbers in the file are not supported.

这个Error是当Java虚拟机试图读取类文件并确定不支持文件中的主版本号和子版本号时抛出。

简单的说就是高版本JDK所编译的项目拿到低版本的JRE环境运行,就会出现这个错误。

同学的这个项目是从别处拷来的,通过settings文件中的版本信息xml文件可以发现,原来编译的环境是Java 1.8,但是同学这里只有JDK 1.7,所以将org.eclipse.wst.common.project.facet.core.xml的java信息改成了1.7,强行在tomcat上运行。

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="Apache Tomcat v7.0"/>
  <fixed facet="java"/>
  <fixed facet="jst.web"/>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="java" version="1.8"/>    <!--同学将version改成了1.7-->
  <installed facet="jst.web" version="2.5"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

解决方式

这里给出我解决的方式

右键单击项目名 ——> properties ——> Java Build Path ——> Libraries ——> 通过Edit修改JRE System Library项为.settings/org.eclipse.wst.common.project.facet.core.xml中规定的java版本 ——> 重启服务器即可

 

如果没有要求版本的JDK,可以在Oracle官网下载

https://www.oracle.com/technetwork/java/javase/downloads/index.html

安装完后进入eclipse ——> Window ——> Preferences ——> Java ——> Installed JREs ——> 点击Add ——> Standard VM ——> 选择jdk目录完成安装 ——> 再按照上述方式修改项目的JDK版本即可

 

如果仍然无法解决问题,那么可能是Tomcat的问题,同样需要保证Tomcat版本与规定的版本一致(其实不一致也没大问题)

主要是修改Tomcat中的JRE版本,步骤如下

Window ——> Preferences ——> Server ——> Runtime Environme ——> 选择服务器 ——> Edit ——> 修改JRE版本为规定的版本

 

如果以上方式仍然无法解决问题,可以尝试使用debug三板斧(误)——重启服务器,重启eclipse,重启电脑

如果还有其他问题可以分享在评论区,尝试一起解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值