Tomcat将JAVA_HOME指向JRE而非JDK导致JavaMelody内存直方图生成失败
解决JavaMelody内存直方图不支持的问题(Tomcat用JRE而非JDK)
我之前也碰到过一模一样的坑!明明JAVA_HOME设的是JDK,Tomcat却偏偏跑在JRE环境里,导致JavaMelody的内存直方图功能直接罢工。别慌,咱们一步步把它搞定:
1. 先确认Tomcat的JVM来源
首先得搞清楚Tomcat到底从哪加载的JVM。你可以在Tomcat的bin目录里找到catalina.bat(Windows)或catalina.sh(Linux),在文件最开头加一行打印命令:
# Windows系统 echo %JAVA_HOME% # Linux系统 echo $JAVA_HOME
启动Tomcat时看控制台输出的路径,是不是你设置的JDK目录。如果不是,说明Tomcat没读到你的JAVA_HOME,或者有其他配置把它覆盖了。
2. 针对Windows下Tomcat服务的解决方法
如果你的Tomcat是作为Windows服务运行的:
- 找到Tomcat安装目录下的
bin\tomcat7w.exe,双击打开配置工具 - 切换到
Java标签页 - 把
Java Virtual Machine的路径从...\jre\bin\server\jvm.dll改成...\jdk1.8.0_151\jre\bin\server\jvm.dll(指向你JDK目录下的jvm.dll文件) - 检查
Java Options里有没有指定其他JRE路径,有的话删掉或替换成JDK路径 - 点击确定,重启Tomcat服务
3. 手动启动Tomcat的解决方法
如果是通过startup.bat/startup.sh手动启动的:
- 打开
startup.bat(Windows),在文件开头手动强制设置JAVA_HOME:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_151 set JRE_HOME=%JAVA_HOME%\jre
- 或者检查系统环境变量,确保
JAVA_HOME确实指向JDK,并且PATH里优先放%JAVA_HOME%\bin,而不是JRE的bin目录 - 重启Tomcat,再看启动日志里的
Java Home路径是否正确
4. IDE中启动Tomcat的情况(Eclipse/IDEA)
如果是在IDE里启动的Tomcat:
- Eclipse:打开
Window > Preferences > Server > Runtime Environments,找到你的Tomcat服务器,点击Edit,在JRE选项里选择安装的JDK(不是JRE) - IDEA:在Run/Debug Configurations里找到Tomcat配置,切换到
JRE标签,选择对应的JDK作为运行环境
验证效果
重启Tomcat后,看启动日志里的Java Home是不是变成C:\Program Files\Java\jdk1.8.0_151(而非带\jre的路径),再访问/monitoring页面,应该就能正常生成内存直方图了!
内容的提问来源于stack exchange,提问作者angusrose
相关产品推荐
相关产品推荐

