您的位置:首页 > 数据库 > Oracle

Centos中将openjdk切换为Oracle Jdk导致Tomcat无法正常启动的问题

2015-08-21 18:07 881 查看
设置JDK环境变量,并且命令行使用java -version

使用service tomcat-web1 start命令报下面的错误

Neither the J***A_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脚本开头加入

J***A_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命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: