【发布时间】:2016-12-13 15:53:11
【问题描述】:
问题并不像标题中看起来那么简单。
我在 Unbutu 14.04 LTS 上使用默认的 Tomcat 7 包。当我在 /usr/share/tomcat7/bin 中没有“setenv.sh”时,当我这样做时它开始说“OK”:
$ sudo service tomcat7 start
* Starting Tomcat servlet engine tomcat7 [OK]
当我使用下面描述的 setenv.sh 时,它 ALSO STARTS 在 /var/lib/logs/catalina.out 中没有错误,但是在 /etc/ 时服务被检测为“失败” init.d/tomcat7 调用“start-stop-daemon --test”并得出结论它没有运行:
$ sudo service tomcat7 start
* Starting Tomcat servlet engine tomcat7 [fail]
我该怎么办?
/usr/share/tomcat7/bin/setenv.sh:
#! /bin/sh
export JAVA_HOME="/home/linc/install/jdk1.7.0_75"
(...)
# Check for application specific parameters at startup
if [ -r "$CATALINA_BASE/bin/appenv.sh" ]; then
. "$CATALINA_BASE/bin/appenv.sh"
fi
还有一个问题,可能相关:当我检查启动后运行的进程检测为“失败”(ps -ef | grep java)时,我可以看到 setenv.sh 添加的所有 -D 选项,但我不能查看“appenv.sh”添加的-D选项(尽管setenv.sh和appenv.sh具有完全相同的755权限)。
注意:如果我启动sudo /usr/share/tomcat7/bin/startup.sh,setenv.sh 不会导致任何问题,并且会使用appenv.sh。
编辑:我可能已经找到原因但没有解释:当我删除 JAVA_HOME 的声明时,它使用默认 jvm 并且服务启动被检测为“OK”,但是当我指定默认 jvm 的主目录时,又失败了!
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
或:
export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
这里发生了什么?
【问题讨论】: