loading class: java/util/List (java.lang.IllegalArgumentException: Unsupported c...
错误信息
AI 解决方案
好的,用户提供了一个Minecraft服务器的启动错误日志,需要我进行分析。这是一个典型的代码报错信息分析任务。
首先看错误信息,核心问题出现在Mixin处理器尝试加载java.util.List类时失败。错误堆栈显示根本原因是Unsupported class file major version 70。
让我仔细分析这个版本号。Java的class文件版本70对应的是Java 26,但Minecraft 1.21.1应该运行在Java 21或更低版本上。这说明编译环境或运行时环境使用了过高版本的Java。
具体到用户场景,用户正在启动一个Minecraft服务器,运行了NeoForge模组加载器和SpongePowered Mixin框架。从错误日志可以看到涉及midnightthoughts模组的ServerLevelMixin。
现在需要思考根本原因。从技术角度看,Mixin框架尝试转换类文件时,遇到了它无法识别的高版本class文件格式。这通常发生在编译模组时使用了比运行时环境更高版本的Java,导致生成的字节码版本不兼容。
我需要按照标准的分析流程来处理:先进行错误翻译,然后分析原因,接着提供解决方案,最后给出预防措施。
对于错误翻译,核心错误信息是"Unsupported class file major version 70",这需要准确翻译成中文。
原因分析要突出版本不匹配这个关键点。模组编译时使用的Java版本过高,而服务器运行环境Java版本较低。
解决方案需要具体可操作。用户需要检查并统一Java版本,可能需要降级编译环境或升级运行环境。同时建议检查模组兼容性,因为有些模组可能还不支持高版本Java。
预防措施方面,建议在开发时使用项目管理工具统一版本,并在README中明确说明Java版本要求。
整个思考过程要确保专业、准确,直接针对问题核心,不涉及任何无关内容。
🔍 错误分析
1. 🌐 错误翻译
原文:Unsupported class file major version 70
译文:不支持的主版本号为70的类文件
2. 🎯 原因分析
根本原因:Java 版本不兼容。
错误的核心是
Unsupported class file major version 70。这里的 major version 70 对应的是 Java 26。这表明您的 Minecraft 服务器或某个模组是用 Java 26 或更高版本编译的,但您尝试运行它的 Java 运行时环境(JRE)版本过低(很可能是 Java 8、17 或 21),无法解析这个新版本的字节码。具体上下文:错误发生在启动过程中,SpongePowered Mixin 框架尝试转换 midnightthoughts 模组的 ServerLevelMixin 类时。该模组的核心依赖 java.util.List 的字节码版本过高,导致加载失败,进而引发整个服务器启动崩溃。
3. 💡 解决方案
您需要确保 编译环境 和 运行环境 的 Java 版本匹配或兼容。
- 检查并升级运行环境 Java 版本:
- 检查并降级模组或开发环境:
您需要安装 Java 26 或更高版本 来运行此服务器。
- 推荐版本:请访问 [Oracle JDK](https://www.oracle.com/java/technologies/downloads/) 或 [Adoptium (Eclipse Temurin)](https://adoptium.net/) 下载最新的 JDK(例如 JDK 21, 22 或更新)。
- 验证版本:在终端或命令提示符中运行
java -version 来检查当前版本。如果升级 Java 版本不可行(例如,为了与其他旧版模组兼容),您需要:
- 联系模组作者:询问
midnightthoughts 模组是否有支持您当前 Java 版本的更新或旧版本。- 自行重新编译:如果您是模组开发者或拥有源码,请将项目的编译环境(如 Gradle/Maven 配置)的
targetCompatibility 或 sourceCompatibility 设置为与您服务器 Java 版本匹配的值(例如 Java 21),然后重新编译模组。临时验证步骤:
# 1. 检查当前 Java 版本
java -version
# 2. 如果版本低于 26,下载并安装新版本的 JDK (例如 JDK 21) 后,使用新版本启动服务器
# 例如,假设新 JDK 安装在 /path/to/jdk-21
/path/to/jdk-21/bin/java -jar your_server.jar nogui
4. 🛡️ 预防措施
sourceCompatibility 和 targetCompatibility,确保生成的字节码与目标用户群的运行时环境(通常是 Java 17 或 21)匹配。README 或 CurseForge/Modrinth 页面说明,了解其支持的 Minecraft 版本 和 Java 版本要求。