天天看点

问题:启动tomcat报找不到JAVA_HOME或者JRE_HOME环境变量的问题

一、错误来源

在非linux系统上(即外部)启动tomcat时显示的错误

二、报错原文

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program

三、错误译文

JAVA_HOME和JRE_HOME环境变量都没有定义 运行这个程序至少需要这些环境变量中的一个

四、错误思索

我明明在/etc/profile这个文件里面添加了java和tomcat的环境变量啊,为什么还出错,而在服务器上启动tomcat就不报这个错误

五、粗略分析错误原因

在服务器上启动tomcat不报错是因为启动tomcat时区/etc/profile文件里面找到了java和tomcat的环境变量,所以顺利启动,而在外部启动tomcat时,tomcat程序首先调用startup.sh脚本文件,startup.sh又去调用catalina.sh这个脚本文件,而catalina.sh脚本文件又会去setclasspath.sh这个脚本文件里面寻找tomcat变量环境,这是因为setclasspath.sh文件就是tomcat变量环境脚本,这是因为这个脚本默认是没有在脚本开头申请java和jdk的变量环境刘静的,因此报错,setclasspath.sh的路径是: /usr/local/tomcat/bin/setclasspath.sh (因为我的tomcat是装在/usr/local路径下了,所以我的是这个,你们要按照你们的安装路径在查找)

六、查看setclasspath.sh脚本文件,精确分析原因

setclasspath.sh脚本原文以及中文解释如下:
说明:通过对这个脚本的分析,我们可以看到,这个脚本就做了一件事情,检查各种变量是否赋值,验证tomcat启动停止需要涉及到的文件,保障tomcat顺利启动停止。而我们报错就是因为它在全文搜索了半天结果一直找不到JRE_HOME和JAVA_HOME这两个变量到底在哪。 七、解决方案 在setclasspath.sh脚本文件的所有没有注释的行的开头加入截图中的两行即可:
问题:启动tomcat报找不到JAVA_HOME或者JRE_HOME环境变量的问题
最后重启tomcat就解决了问题。