你遇到的错误信息 "Archived non-system classes are disabled because the java.system.class.loader property is specified" 是 Java 虚拟机(JVM)在启动时的一个警告,继而可能因处理 -javaagent 参数失败导致启动失败。这通常与类加载器(ClassLoader)的设置有关。下面我将为你解释该错误的原因及解决方法。
该错误的原因及解决方法
- 🔍 错误原因
- 🛠️ 解决方法
- 💎 总结
🔍 错误原因
- IDE 配置问题:IntelliJ IDEA 或 PyCharm 等 IDE 在启动脚本中通常会预设一些 JVM 参数,包括指定类加载器或添加 Java 代理。安装升级、配置损坏或不兼容的版本可能导致这些参数出错。
- 环境变量冲突:系统环境变量 JAVA_TOOL_OPTIONS 或 _JAVA_OPTIONS 中可能设置了 -javaagent 或 -Djava.system.class.loader 参数,这些设置会影响所有 Java 应用程序,可能与 IDE 的预期配置冲突。
- JDK 版本兼容性:你使用的 JDK 版本与 IDE 或其代理库可能不兼容。例如,较新的 JDK 版本可能弃用了某些特性或更改了内部机制。
- 代理文件问题:-javaagent 指定的代理 Jar 包路径错误、文件损坏或版本不兼容。
🛠️ 解决方法
请尝试按以下顺序操作,通常能解决该问题。
检查并清理环境变量
- 临时移除系统环境变量 JAVA_TOOL_OPTIONS 和 _JAVA_OPTIONS 中可能包含的 -javaagent 或 -Djava.system.class.loader 参数。
- Windows:在命令提示符中输入:set JAVA_TOOL_OPTIONS=
set _JAVA_OPTIONS= - Linux/macOS:在终端中输入:unset JAVA_TOOL_OPTIONS
unset _JAVA_OPTIONS - 完成后,再次尝试启动你的 Java 应用程序或 IDE。
检查并修复 IDE 配置 如果你是在启动 IntelliJ IDEA、PyCharm 等 IDE 时遇到此错误:
- 检查启动脚本/配置文件:查看 IDE 安装目录下 bin 文件夹中的启动脚本(如 idea.bat, idea.sh, pycharm.sh) 或配置文件(如 idea.properties),确认是否存在 -Djava.system.class.loader=… 或 -javaagent:… 的设置。若有,请检查其路径是否正确,尤其是路径中包含空格或特殊字符时是否被正确引用。
- 重置 IDE 配置:如果问题是在升级 IDE 后出现的,很可能是旧配置与新版本不兼容。可以尝试重命名或删除 IDE 的配置目录(例如,对于 IntelliJ IDEA,通常在用户目录下的 ~/.IntelliJIdea2025.1 或 ~/AppData/Roaming/JetBrains/IntelliJIdea2025.1),然后重启 IDE 让其重新生成默认配置(注意:此操作会丢失你的个人设置)。
- 检查使用的 JDK:确保 IDE 本身使用的是其自带的 JetBrains Runtime (JBR) 或一个兼容的 JDK 版本。你可以在 IDE 的设置中查看或更改所使用的 JDK。
验证 Java 代理 如果你手动为应用程序添加了 -javaagent 参数(例如用于性能监测、代码覆盖率等):
- 暂时移除该参数启动应用,看是否正常。
- 如果移除后正常,说明问题出在该代理上。请检查代理 Jar 包的路径是否正确、文件是否完整、以及其是否与当前使用的 JVM 版本兼容。
重新安装 如果以上方法均无效,可能是 IDE 安装文件或自带的运行时环境损坏。请尝试完全卸载后重新安装你的 IDE。卸载后,最好手动删除安装目录和配置目录(如需保留配置,请提前备份),以确保安装环境干净。
#💡 如何避免此类问题
- 谨慎设置全局环境变量:避免在 JAVA_TOOL_OPTIONS 和 _JAVA_OPTIONS 中设置可能产生广泛影响的 JVM 参数。
- 注意升级兼容性:升级 IDE 或 JDK 时,注意查阅版本说明,了解潜在的兼容性变化。
- 保持简洁:除非必要,尽量不要手动修改 IDE 的启动脚本或指定自定义的系统类加载器。
💎 总结
你遇到的错误核心在于 JVM 因指定自定义系统类加载器而禁用了 CDS 对非系统类的加载,并且随后处理 Java 代理时发生了失败。通过检查环境变量、修复 IDE 配置、验证 Java 代理以及必要时重新安装 IDE,通常可以解决这个问题。
希望这些信息能帮助你解决问题!


