JVM初始化报错java.lang.NoClassDefFoundError:求助查找JVM安装目录等问题
解决Java初始化报错:Error occurred during initialization of VM java.lang.NoClassDefFoundError: java.lang.Object
嘿,咱们一步步来搞定这个问题——这种报错大多是多JDK版本冲突、环境变量配置错误,或者JDK文件损坏导致的。而且你用的JDK14已经采用模块化架构,和旧版JDK的rt.jar机制完全不同,这也是你看旧文档摸不着头脑的原因,下面给你具体的解决步骤:
第一步:先搞清楚系统当前在用哪个JDK
打开命令提示符(CMD),执行这两个命令:
- 执行
where java:会列出系统能找到的java.exe路径,看看是不是指向你安装的jdk-14.0.2或jdk-14.0.1的bin目录(比如C:\Programmes\Java\jdk-14.0.2\bin\java.exe)。 - 执行
echo %JAVA_HOME%:查看输出的路径是不是正确的JDK根目录,如果为空或者指向错误的版本,那就是环境变量的问题。
第二步:修复环境变量(核心解决方法)
你装了两个JDK,大概率是环境变量优先级导致系统调用了损坏的JDK版本:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
- 在系统变量区域:
- 找到
JAVA_HOME,修改为你想用的JDK路径(比如C:\Programmes\Java\jdk-14.0.2)。 - 找到
Path变量,点击编辑,把%JAVA_HOME%\bin移到最顶部(确保系统优先找到正确的Java执行文件)。
- 找到
- 保存所有设置后,关闭所有CMD窗口,重新打开一个新的CMD,再执行
java -version测试。
第三步:排查JDK是否损坏
如果环境变量配置正确还是报错,可能是JDK文件损坏:
- 先备份旧的
jdk-14.0.1文件夹(如果里面有重要文件的话),然后删除它,避免版本冲突。 - 重新下载JDK14.0.2的官方安装包,覆盖安装到原路径,或者彻底卸载后重新安装。
注意:JDK9及以上版本已经移除了
rt.jar,核心类都封装在lib/modules的模块化文件里,所以你之前看到的针对rt.jar的操作完全不适用于JDK14,不用再纠结这个啦!
关于引导类加载器路径的补充说明
你提到的“修改引导类加载器搜索路径”,在JDK14里已经不用手动操作rt.jar了:
如果确实需要调整核心类路径,要用模块化相关的参数,比如--module-path或--add-modules,但这个报错场景下根本不需要调整这个,先把环境变量和JDK完整性问题解决就好。
内容的提问来源于stack exchange,提问作者AymericNgy




