Linux启动Tomcat返回JRE_HOME字段错误


最近有朋友在启动服务器的Tomcat时,返回启动信息中JRE_HOME字段出现错误,同时Tomcat服务器运行Java类异常;

Tomcat的启动信息类似如下:

Using CATALINA_BASE:   /apache-tomcat-8.5.16
Using CATALINA_HOME:   /apache-tomcat-8.5.16
Using CATALINA_TMPDIR: /apache-tomcat-8.5.16/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /apache-tomcat-8.5.16/bin/bootstrap.jar:/apache-tomcat-8.5.16/bin/tomcat-juli.jar
Tomcat started.

其中JRE_HOME与配置的JRE路径不同(这里假设实际路径为/usr/lib/java-1.8.0-opendjk/jre),在探究了一番后,总结出来的这类问题的解决思路如下:


1、检查全局配置中JRE_HOME的配置是否正确

可以在命令行中输入:

echo $JRE_HOME
根据返回的信息来判断,如果$JRE_HOME字段错误,可以添加这个全局字段,编辑 /etc/profile

vim /etc/profile
添加或修改 JRE_HOME 字段;

再重新更新配置文件,就可以了

source /etc/profile



2、如果全局JRE_HOME字段正常或者通过以上方法,Tomcat启动返回的JRE_HOME 任然错误,那么有可能是Tomcat启动时使用了局部的JRE_HOME字段,此时可以通过强制规定Tomcat启动配置来解决;

编辑 Tomcat根目录/bin/setclasspath.sh ,在文件的开头添加以下

export JAVA_HOME=/usr/lib/jvm/java-openjdk
export JRE_HOME=/usr/lib/jvm/java-openjdk/jre

其中JAVA_HOME,JRE_HOME的值添加为实际的路径;

之后再重新启动Tomcat,返回信息正确:

Using CATALINA_BASE:   /apache-tomcat-8.5.16
Using CATALINA_HOME:   /apache-tomcat-8.5.16
Using CATALINA_TMPDIR: /apache-tomcat-8.5.16/temp
Using JRE_HOME:        /usr/lib/java-1.8.0-opendjk/jre
Using CLASSPATH:       /apache-tomcat-8.5.16/bin/bootstrap.jar:/apache-tomcat-8.5.16/bin/tomcat-juli.jar
Tomcat started.


我的朋友是由于后期更改了tomcat的用户组,使tomcat直接读取父类JRE_HOME字段,直接读取系统中预安装的该用户组的Java配置文件,而不是全局的JRE_HOME字段,才导致这样的异常,通过方法2解决;




你可能感兴趣的:(Tomcat)