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

Java环境搭建全攻略:从版本选择到Minecraft服务器调优 Java运行时环境(JRE)和开发工具包(JDK)是运行Java应用程序的基础组件,其版本兼容性直接影响程序的稳定运行。Java采用版本号与LTS(长期支持)机制进行管理,其中Java 8和Java 17是两个广泛使用的LTS版本,分别对应不同的技术生态和性能特性。理解Oracle JDK与OpenJDK等发行版的区别,对于规避许可证风险、确保生产环境稳定至关重要。在游戏开发与服务器部署领域,正确的Java版本配置能有效解决程序启动失败、内存溢出等常见问题。例如,在《我的世界》(Minecraft)服务器部 阅读详情

问题重述

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

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

Ubuntu 18.04部署Minecraft服务器的Java 17避坑指南 Java是运行Minecraft服务端的核心运行时环境,其版本兼容性直接决定服务能否启动。Minecraft 1.17+强制要求Java 17+,而Ubuntu 18.04官方源仅提供OpenJDK 11,存在字节码版本(如major.minor 61.0)、JNI库、glibc 2.27兼容性及ZGC垃圾回收器等多重不匹配。强行使用APT安装或PPA源易引发UnsupportedClassVersionError、JNI错误或OOM崩溃。可靠方案是绕过系统包管理,从Adoptium(Eclipse Tem 阅读详情

相关推荐

JMeter安装报错全解析:从Java环境配置到系统化排错指南

Java运行环境(JRE/JDK)是众多Java应用程序的基础运行平台,它通过Java虚拟机(JVM)为软件提供跨平台的执行能力。其核心原理在于将Java字节码编译为特定系统的机器指令,从而实现“一次编写,到处运行”。这一技术价值在于极大地简化了跨平台应用的开发和部署流程,是构建企业级后端服务、桌面应用和测试工具链的基石。在软件测试领域,特别是性能测试和接口测试场景中,稳定的Java环境是确保测试工具可靠运行的前提。本文聚焦于负载测试工具JMeter的安装与配置,深入剖析因Java版本不兼容、环境变量配置错

weixin_30336061的博客 393

启动jar包报错UnsupportedClassVersionError,如何修复

首先查看完整异常日志 大致意思是,这个jar包已由最新版本的Java运行时(类文件版本55.0)编译,当前版本的Java运行时仅识别高达52.0的类文件版本。通俗来讲,就是我们使用Java 11编译了我们的类,并尝试使用Java 8运行它。解决方案,使用java11环境运行即可Java版本号参考...

进击的豌豆的博客 1745

Java ZIP解压实战:编码、内存与安全三大陷阱

ZIP解压在Java中远不止调用ZipInputStream那么简单,其本质是跨平台字符编码解析、流式内存管理与路径安全校验的综合问题。核心原理在于ZIP文件头中路径名以原始字节存储,JDK默认依赖系统locale解码,导致Windows(GBK)与Linux(UTF-8)环境不一致时出现中文乱码或invalid zip archive错误;同时ZipInputStream采用缓冲区流式解压,大文件易触发OutOfMemoryError;更关键的是ZipEntry.getName()返回未经校验的原始路径,

weixin_30367169的博客 440

jdk版本不匹配问题UnsupportedClassVersionError:

线上环境jdk版本为1.7 如果本地程序以1.8版本打包部署,则会报如下错误: java.lang.UnsupportedClassVersionError: com/tydic/comm/CommTools com.tydic.servlet.DataReportJsonServlet.doPost(DataReportJsonServlet.java:84) 通过sublimetex...

HelloKitty520123的专栏 910

大数据编译报错:不支持的类文件主要版本

当我们编写代码并使用编译器将其转换为可执行的字节码时,编译器会根据所使用的 JDK 版本来决定生成的字节码的版本。每个 JDK 版本都有对应的字节码主要版本,例如 Java 8 对应的主要版本是 52,Java 11 对应的主要版本是 55。如果我们的代码使用了较新的 JDK 特性或库,我们可以将 JDK 或 JRE 版本升级到与代码生成的字节码版本兼容的版本。如果我们无法修改源代码或升级 JDK 版本,我们可以使用字节码转换工具来将生成的字节码文件转换为较旧的主要版本。

2301_79367634的博客 1160

一文介绍Linux EAS

EAS只在系统负载不重时,即系统中每个CPU的利用率都低于其算力的80%时才被启用,而且选出的最节能CPU只有比线程当前运行的CPU节约能量大于6%时,线程才会迁移到该CPU运行。因此EAS为线程选择最节约能量的CPU来运行的前提条件是很苛刻的,针对重载场景(比如游戏),EAS的功能应该很少被使用起来,针对重载场景的功耗优化,这里可能是一个值得尝试的点。算力(capacity)是CPU调度中的一个基础概念,它反映的是一个CPU的计算能力,是个规格化的值,可以通过读取Android手机的文件节点。

youzhangjing_的博客 1235

Exception in thread “main“ java.lang.IllegalArgumentException: Unsupported class file major version

pitest测试时抛出Exception in thread “main” java.lang.IllegalArgumentException: Unsupported class file major version 61 如图抛出错误: 解决办法:点击项目的properties->java Complier->Enable project specific settings->将compiler compliance level设置为15,也就是与jvm一致的版本(在命令行中jav

dw将限制条件全部检测通过后才能提交表单 3538

[RK3568][Android11.0]Vold-DiskInfo:区分u盘和硬盘

测试平台 Platform: RK3568 OS: Android 11.0 需求描述 目前系统内部设备没有对硬盘(sata/usb移动硬盘)和u盘做区分,统一显示的为usb存储设备.目前有需求要在显示上有所区分。 解决方案 如何区分移动硬盘和U盘,见Android usb设备的检测及区分(sata硬盘、优盘及移动硬盘).主要就是检测removeable值,为0:硬盘,为1:u盘 解决补丁如下 From 572cf35c07f68c5cb5defe40c536dd9ad1b4648e Mon Sep 17

weixin_39966398的博客 1897

Tomcat 错误org/dom4j/DocumentException : Unsupported major.minor version 52.0解决办法

启动项目遇到错误 org/dom4j/DocumentException : Unsupported major.minor version 52.0 (unable to load class [org.dom4j.DocumentException] 解决办法如下 切换dom4j到低版本 <dependency> <groupId>dom4j&l...

kekemax的博客 687

10-Oracle 23 ai Vector Search 概述和参数

企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation :RAG)功能,RAG能够将LLM的生成能力与知识库的精准资料库进行检索结合,将大模型部署在内部同时将私有的数据进行LLM的检索避免泄露企业专用的数据同时提高的准确性。于是如何将数据存入向量数据库以及向量查询等这些基本功能变得必备和重要。

远方的专栏 1295

QT6与QT5安装全攻略:从下载到环境配置一站式指南

本文提供了一份详尽的QT6与QT5安装教程,涵盖从版本选择、在线安装器使用到环境变量配置的全过程。针对新手常见痛点,重点对比了QT6与QT5的安装差异,并给出了MinGW与MSVC编译器的选择建议,旨在帮助开发者快速搭建稳定可用的QT开发环境,避免常见错误。

weixin_29216353的博客 312

Ubuntu 20.04 apt安装Java:OpenJDK版本、角色与JAVA_HOME配置指南

Java是一种跨平台编程语言,其运行依赖于JVM(Java虚拟机)和配套工具链;在Linux发行版中,OpenJDK作为主流开源实现,通过apt包管理器以模块化方式分发——不同版本(8/11/17)对应不同LTS生命周期,不同角色(JDK/JRE/headless)决定是否包含编译器、GUI组件或调试工具;这种精细化拆分提升了系统安全性与容器适配性,但也要求开发者明确区分开发环境(需javac)与生产部署(可选headless JRE);Ubuntu 20.04官方仓库仅提供OpenJDK,不支持Oracl

cqwmy840702的博客 287

你不必懂AI,但必须会用AI:写给所有焦虑中的职场人

AI时代不必焦虑学技术,关键在于用AI解决实际问题。文章指出,99%的人只需成为AI使用者而非建造者,核心竞争力在于结合业务痛点运用AI工具提升效率。与其盲目学习工具,不如梳理工作流程,识别可优化环节,让AI赋能重复性、标准化任务。行业经验与AI工具的结合才是真正的职场护城河。建议从具体工作场景出发,寻找匹配的AI解决方案,迈出应用第一步。

hundred98的博客 718

JDK25环境配置本质是运行时契约重建

Java开发环境配置已从简单的路径设置演进为构建可验证的JVM运行时契约。JDK25通过模块化(jmods)、精简镜像(jlink)、ZGC默认启用及字节码版本升级(69)等机制,重构了JAVA_HOME语义、PATH作用域和编译-运行分离模型。其技术价值在于提升启动性能、降低资源占用并强化版本一致性,广泛应用于Spring Boot 3.4微服务、Flink流处理及容器化部署场景。本文聚焦JDK25配置中JAVA_HOME与jlink镜像解耦、MAVEN_OPTS强制对齐、ZGC预热控制等核心实践,揭示传

weixin_30838873的博客 332

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

【软件定义汽车】-【架构篇】-全面讲解整车电子电气架构演进

前言: 前段时间,陆陆续续写了一些电子电气架构相关的文章。这里打算再写最后一篇作为收尾,为整个系列画上句号,把坑填上,这个话题就算过去了。后续一段时间,尽量把之前文章中挖的“坑”填一下。行文逻辑将借鉴5W2H进行。 另外,本文作为一篇整合性的文章,为保证逻辑的完整性,主要是将大量过去自己文章中的内容进行梳理整合,也存在很多行业内专家的公开文章的内容,请见谅。 WHAT1:什么是汽车电子电气架构? 电子电气架构:EEA,Electrical/Electronic Architecture.

零点壹客的博客 1万+

Ubuntu 14.04 部署 Graylog2 v2.5 实战指南

日志集中化是现代运维的基础能力,其核心在于统一采集、结构化存储与可检索分析。Graylog 作为轻量级开源日志平台,凭借对 Syslog/GELF 协议的原生支持、低依赖架构和简易认证机制,在资源受限或系统锁定场景中展现出独特价值。尤其在老旧操作系统如 Ubuntu 14.04(Trusty Tahr)环境下,Graylog2 v2.5.x 仍能稳定运行于 Java 7 和 Elasticsearch 5.6,无需 Docker 或 systemd,规避了 agent 认证失败、JVM 版本不兼容等高频问题

weixin_30932215的博客 409

基于STM32设计的校园智慧路灯系统(华为云IOT)(212)

当前设计并研发了基于STM32的智慧路灯系统,本系统的目的是打造一个高效节能、智能化管理的校园照明环境。通过集成STM32F103RCT6高性能微控制器为核心,结合多种传感器模块如BH1750光敏传感器、热释电人体感应模块以及中科微电子GPS模块等,实现了对校园路灯的精准控制与实时监控。

5138

Ubuntu 16.04 手动部署 Elasticsearch 6.8 完整指南

Elasticsearch 是一个基于 Lucene 的分布式搜索与分析引擎,其核心原理依赖 JVM 运行时、系统资源调度(如文件描述符、内存锁定)及分布式协调机制(如 Zen Discovery)。掌握其底层部署逻辑,对理解搜索架构可靠性、故障归因和性能调优具有不可替代的技术价值。本文聚焦 Ubuntu 16.04 环境下 Elasticsearch 6.8 的手工部署实践,覆盖 OpenJDK 8 适配、systemd 服务治理、elasticsearch.yml 与 jvm.options 配置协同等

weixin_30797199的博客 785

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Unsupported class file major version xx

Java SE 和 Major Version 对应关系如下: Java SE Major Version Hex 18 62 0x3E 17 61 0x3D 16 60 0x3C 15 59 0x3B 14 58 0x3A 13 57 0x39 12 56 0x38 11 55 0x37 10 54 0x36 9 53 0x35

nshzzu130的专栏 516

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

linux open usb失败,Linux libusb "LIBUSB_ERROR_ACCESS" libusb_open返回值为-3 error解决方法...

Linux下libusb开发遇到如下问题在Linux下用libusb进行usb设备打开时遇到“LIBUSB_ERROR_ACCESSlibusb_open函数返回值为-3”此问题原因为该用户没有权限!解决方法第一步:执行以下命令sudo chmod -R 777 /dev/bus/usb/重新运行测试程序,若还报错,执行第二步第二步:永久修改 USB 设备权限1)使用lsusb命令找出 USB...

weixin_39979245的博客 2201

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CentOS 7.6 libusb的安装及遇到的错误

CentOS 7.6 libusb安装及错误.

weixin_46854241的博客 1522

已解决java.lang.UnsupportedClassVersionError异常的正确解决方法,亲测有效!!!

已解决java.lang.UnsupportedClassVersionError异常的正确解决方法,亲测有效!!!

小明的Java问道之路 2万+

Unsupported class file major version 59

注意:解决方法1的写的数字是会修改这里的,如果pom.xml中有上面的标签,则要一起改,不然它会修改java编译器的jdk版本。解决方法1:在pom.xml文件中,里面的数字对应jdk的版本。(我改成jdk12版本就可以使用)解决方法2:点击file,选择setting选项卡,然后修改里面的java编译器的jdk版本。异常原因:不支持类文件59版本(也就是对应jdk15版本)。

khmff的博客 2705

error: #error -- unsupported GNU version! gcc versions later than 6 are not supported!

当我在运行make.sh脚本的时候,出现以下错误: error: #error -- unsupported GNU version! gcc versions later than 6 are not supported! 经过一番谷歌,尝试到可用的解决办法是: 修改gcc的版本,具体操作如下: sudo rm /usr/local/cuda/bin/gcc sudo rm /usr/loc...

律己且好学,才能保证不坠入愤世嫉俗之列。 8153
上一篇: 最大公约数(Greatest Common Divisor)【算法及实现】
下一篇: RAID技术原理【浅析】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值