设置JDK环境变量,并且命令行使用java -version
使用service tomcat-web1 start命令报下面的错误
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
注:tomcat-web1为Tomcat服务名,Tomcat设置服务的方法网上有很多不再赘述
一种方法是修改setclasspath.sh,在sh脚本开头加入
JAVA_HOME=/usr/lib/java-1.7.0
但是这种方法并不好,如果Java home发生变化还需要修改shell
所以用另一种方法,先看shell脚本
CATALINA_HOME_DATA=/usr/local/tomcat/tomcat7.0
start_tomcat=$CATALINA_HOME_DATA/bin/startup.sh
stop_tomcat=$CATALINA_HOME_DATA/bin/shutdown.sh
start(){
${start_tomcat}
if [ $? -eq 0 ]; then
printf "Tomcat7-data started \t\t\t\t\t[\033[32m OK \033[m]\n";
else
printf "Tomcat7-data started \t\t\t\t\t[\033[31m FAIL \033[m]\n";
fi
}
service运行指定服务(称之为System V初始脚本)时,把大部分环境变量去掉了,只保留LANG和TERM两个环境变量,并且把当前路径置为/,也就是说是在一个可以预测的非常干净的环境中运行服务脚本。
所以在脚本运行的时候找不到环境变量,所以修改成下面的脚本
CATALINA_HOME_DATA=/usr/local/tomcat/tomcat7.0
start_tomcat=$CATALINA_HOME_DATA/bin/startup.sh
stop_tomcat=$CATALINA_HOME_DATA/bin/shutdown.sh
start(){
su - root -c "${start_tomcat}"
if [ $? -eq 0 ]; then
printf "Tomcat7-data started \t\t\t\t\t[\033[32m OK \033[m]\n";
else
printf "Tomcat7-data started \t\t\t\t\t[\033[31m FAIL \033[m]\n";
fi
}
su - root -c “${start_tomcat}”
-表示执行环境变量
-c是执行命令
整体命令的意思是使用root用户且带环境变量的方式执行/usr/local/tomcat/tomcat7.0/bin/startup.sh命令
版权声明:本文为博主原创文章,未经博主允许不得转载。
Centos中将openjdk切换为Oracle Jdk导致Tomcat无法正常启动的问题
原文地址:http://blog.csdn.net/jaune161/article/details/47838217