tomcat startup.sh找不到JAVA_HOME

时间:2010-04-02 13:44:54

标签: tomcat

在启动Tomcat 6.0作为服务时,我对CentOs 5.4的这种奇怪行为感到有点困惑

我在/etc/init.d/tomcat添加了一个脚本,可以用用户'tomcat'启动/停止/重启Apache Tomcat 6.0,并将其注册为服务。该服务的问题是我得到了“既未定义JAVA_HOME也未定义JRE_HOME环境变量”。但是当输入'sudo -u tomcat echo $ JAVA_HOME'时,我得到'/usr/java/jdk1.5.0_22'这是正确的,因为我使用的是JDK。我该怎么办?

4 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,并将JAVA_HOME变量定义放在文件/etc/environment上解决了这个问题。

最初我创建了JAVA_HOME环境变量调用:

$ export JAVA_HOME=<path_to_my_java_home>

然后我意识到Tomcat startup.sh脚本在使用JAVA_HOME调用时无法访问sudo变量的值,这是启动Tomcat服务器所必需的。

首先,我尝试使用JAVA_HOME导出sudo变量,但它不起作用:

$ sudo export JAVA_HOME=<path_to_my_java_home>
sudo: export: command not found

然后我尝试将JAVA_HOME变量定义添加到/etc/environment文件中。 以下是我的/etc/enviroment文件现在的样子:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME=/usr/lib/jvm/java-7-oracle

然后在用startup.sh调用Tomcat sudo脚本并访问http://localhost:8080之后,Brownser带来了Tomcat启动页面,该页面表明服务器已成功安装。

答案 1 :(得分:2)

您是否尝试过强制JAVA_HOME env变量进入启动脚本本身?每当我遇到这样的问题时,我发现它是一种很好的故障排除技术,可以尝试通过在脚本本身中设置它来追踪丢失此信息的位置。

答案 2 :(得分:0)

您是否检查过/etc/profile.d/java.sh中的路径?

还要尝试检查它返回的java版本:which java

如果没有配置错误,这应该返回java.sh中的确切路径。在后一种情况下卸载所有java并重新安装最新的jdk。

无论如何,这些帖子在您的收藏夹中派上用场以供日后参考。

http://www.centos.org/modules/newbb/viewtopic.php?topic_id=5717&forum=28

答案 3 :(得分:0)

在bin / catalina.sh中,只需将crontab的JAVA_HOME添加为

# For CRONTAB
export JAVA_HOME=/usr/java/latest
# END