tomcat启动错误:Error occurred during initialization of VM java/lang/NoClassDefFoundE

碰到tomcat启动一闪而过的问题。
日志提示:Error occurred during initialization of VM java/lang/NoClassDefFoundE
一看就知道是java的路径配置出了问题。
然而重装了n次tomcat+各种配置环境变量后,总算发现问题所在了。
由于之前也出现过该问题,上次是因为同名的java.exe存在。

这回坑你爷爷的,竟然是因为java路径选择了jre而不是jdk导致的。

每次tomcat安装都是默认获取的jre路径,以前都是一键到底从没在意。
直到翻到这篇博客才想起来,jdk和jre不一样的。
http://blog.sina.com.cn/s/blog_4c37f6410100qnc8.html

简单的说,解决办法就是:用tomcat目录下的配置工具:Tomcat8w.exe,
到java标签下设置java virtual machine的路径。
以我的为例:C:\Program Files\Java\jdk1.8.0_144\jre\bin\server\jvm.dll
这里一定要是jdk路径不能是jre。
暂时不去纠结到底是为什么。
<think>嗯,用户遇到了Maven配置错误,具体是VM初始化错误NoClassDefFoundError,找不到java/lang/Object。我需要先理解这些错误的可能原因。根据引用内容,用户之前安装Maven时遇到类似问题,是由于rt.jar和tools.jar缺失,这两个JAR文件属于JDK的核心库,通常在JDK的lib目录下。所以首先应该检查JDK的安装是否正确,环境变量是否配置正确。 然后,NoClassDefFoundError针对java/lang/Object,这说明连最基本的Object类都找不到,而Object类在rt.jar里。可能JDK安装不完整,或者JAVA_HOME指向了JRE而不是JDK。因为JRE不包含编译工具和这些库,所以需要确认JAVA_HOME是否指向了JDK的安装路径。 另外,用户提到Maven构建项目时出现的问题,可能和Maven的配置有关。比如,Maven需要正确的JDK路径来执行编译操作。如果环境变量中JAVA_HOME设置错误,或者PATH中没有包含JDK的bin目录,可能导致Maven无法找到正确的Java环境。 接下来要考虑的步骤是:检查JDK安装路径是否存在,确认rt.jar和tools.jar是否存在。比如,在C:\Program Files\Java\jdk1.x.x_xxx\jre\lib下的rt.jar,以及lib目录下的tools.jar。如果这些文件缺失,可能需要重新安装JDK。 另外,用户可能误将JRE当作JDK使用,尤其是在环境变量配置中。JRE不包含开发工具,所以必须确保安装的是JDK,并且JAVA_HOME指向的是JDK的根目录,而不是JRE的。 然后,检查系统环境变量,包括JAVA_HOME、PATH和CLASSPATH。JAVA_HOME应该指向JDK安装目录,PATH应该包含%JAVA_HOME%\bin,而CLASSPATH可能需要包含tools.jar,不过现代Java版本通常不需要手动设置CLASSPATH。 可能还需要检查Maven的配置文件settings.xml,看看是否有不正确的配置,或者是否指定了错误Java版本。同时,用户可能在安装Maven后没有正确关闭并重新打开命令行窗口,导致环境变量未更新,这也是常见的问题。 如果用户已经安装了多个JDK版本,可能会存在版本冲突,需要确认当前使用的是正确的版本。在命令行中输入java -version和javac -version,看看输出是否一致,是否指向同一个JDK版本。 最后,如果以上步骤都正确,但问题仍然存在,可能需要完全卸载JDK和Maven,然后重新安装,并严格按照步骤配置环境变量。</think>### Maven配置错误解决方案:VM初始化与NoClassDefFoundError #### 一、问题根源定位 出现`Error occurred during initialization of VM`及`NoClassDefFoundError: java/lang/Object`的根本原因通常与Java环境配置有关: 1. **JDK核心库缺失**:`rt.jar`和`tools.jar`是Java核心类库,位于JDK安装目录中: - `rt.jar`路径:`C:\Program Files\Java\jdk1.x.x\jre\lib\rt.jar` - `tools.jar`路径:`C:\Program Files\Java\jdk1.x.x\lib\tools.jar`[^1] 2. **环境变量配置错误**:`JAVA_HOME`指向了JRE而非JDK,或未正确配置PATH变量 #### 二、具体解决步骤 1. **验证JDK完整性** - 打开资源管理器,检查以下路径是否存在: ``` C:\Program Files\Java\jdk1.8.0_xxx\jre\lib\rt.jar C:\Program Files\Java\jdk1.8.0_xxx\lib\tools.jar ``` - 如果文件缺失,需[重新安装JDK](https://www.oracle.com/java/technologies/downloads/) 2. **配置环境变量** ```shell # Windows系统示例 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_xxx PATH=%JAVA_HOME%\bin;... ``` 验证配置: ```cmd > java -version > javac -version ``` 两个命令应显示相同JDK版本 3. **检查Maven配置** - 在命令行执行: ```cmd mvn -v ``` 正确输出应包含: ``` Java version: 1.8.0_xxx Maven home: ... ``` 4. **清理缓存(可选)** ```cmd mvn clean install -U ``` #### 三、典型错误场景修复 **案例:错误配置JAVA_HOME** ```shell # 错误配置(指向JRE) JAVA_HOME=C:\Program Files\Java\jre1.8.0_xxx # 正确配置 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_xxx ``` 修复后需重启命令行窗口使配置生效[^1] #### 四、进阶验证 通过简单Java程序测试环境: ```java public class EnvTest { public static void main(String[] args) { System.out.println(System.getProperty("java.home")); } } ``` 编译执行应输出JDK路径而非JRE路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值