在启动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。我该怎么办?
答案 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