tomcat startup.sh查找JAVA_主页时遇到问题

tomcat startup.sh查找JAVA_主页时遇到问题,tomcat,Tomcat,在CentOs 5.4上启动Tomcat 6.0作为服务时,这种奇怪的行为让我有点困惑 我在/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',这是正确的,因为我正在使用

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


我在/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。对此我能做些什么?

您是否尝试过将JAVA_HOME env变量强制加入到开始脚本本身中?每当我遇到这样的问题时,我都会发现这是一种很好的故障排除技术,通过在脚本中设置它来尝试跟踪丢失这些信息的位置。

您检查了/etc/profile.d/java.sh中的路径了吗

还可以尝试检查返回的java版本:which java

如果您的配置有误,那么它应该返回java.sh中的确切路径。在后面的例子中,卸载所有java并重新安装最新的jdk

无论如何,这篇文章在你的收藏夹中很有用,供以后参考


我遇到了同样的问题,通过将
JAVA\u HOME
变量定义放在文件
/etc/environment
中解决了这个问题

最初,我创建了
JAVA\u HOME
环境变量,调用:

$ export JAVA_HOME=<path_to_my_java_home>
然后我尝试将
JAVA\u HOME
变量定义添加到
/etc/environment
文件中。 下面是我的
/etc/environment
文件现在的样子:

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

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

在bin/catalina.sh中,只需将crontab的JAVA\u主页添加为

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

对当我直接在$CATALINA_HOME/bin/startup.sh中插入export JAVA_HOME=/usr/JAVA/jdk1.5.0_22时,它就可以正常工作了。记住要将它插入到脚本的开头,而不是结尾。我没有/etc/profile.d/JAVA.sh。不要认为从rpm安装的JDK会在所有用户的java-version返回上创建一个:java版本“1.5.0_22”java(TM)2运行时环境,标准版(build 1.5.0_22-b03)java热点(TM)客户端VM(build 1.5.0_22-b03,混合模式,共享)还有'echo$JAVA_HOME'return/usr/JAVA/jdk1.5.0_22;我不知道在守护进程的起始位置调用了这个文件,但它确实调用了。这使我不必在每个服务(在linux上)/etc/default/$应用程序文件中都添加JAVA_HOME值。
# For CRONTAB
export JAVA_HOME=/usr/java/latest
# END