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

问题重述

今天帮同学调试一个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,重启电脑

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于您遇到的`java.lang.UnsupportedClassVersionError: edu/hnuahe/lixu/HelloWorld : Unsupported major.minor version 52.0`错误,这是由于您正在尝试运行的Java类文件的版本与Java运行时环境(JRE)的版本不兼容所引起的。 这个错误通常发生在您正在使用一个较新版本的Java编译器(如Java 8)来编译您的代码,然后将该代码尝试在较旧版本的JRE(如Java 7)上运行。导致这种不兼容的原因是因为类文件的版本大于JRE所能识别的版本。 要解决这个问题,您可以尝试以下几个步骤: 1. 确保您正在使用与您的JRE版本相匹配的Java编译器来编译您的代码。如果您的JRE版本是Java 8,则应使用Java 8编译器。 2. 确认您的JRE版本是否支持您要运行的Java类文件的版本。在这种情况下,版本号52.0表示您的Java类文件是使用Java 8编译的。 3. 如果您的JRE版本较旧且不支持Java 8编译的类文件,则可以尝试升级您的JRE版本以与您的类文件兼容。 4. 如果您无法升级JRE版本,您可以尝试通过使用较旧版本的Java编译器重新编译您的代码,以便生成与您的JRE版本兼容的类文件。 总结一下,要解决`java.lang.UnsupportedClassVersionError: edu/hnuahe/lixu/HelloWorld : Unsupported major.minor version 52.0`错误,您需要确保您的Java类文件版本与您的JRE版本兼容。您可以通过升级JRE版本或重新编译代码来解决此问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值