Ubuntu 16.04:Tomcat 8不会以setenv.sh启动

时间:2016-05-26 15:05:11

标签: java ubuntu tomcat

我在setenv.sh目录中创建了一个tomcat8/bin文件,其中包含以下内容:

#!/bin/sh
#
# ENVARS for Tomcat
#
export CATALINA_HOME="/usr/share/tomcat8"

export CATALINA_BASE="/usr/share/tomcat8"

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"

# TDS specific ENVARS
#
# Define where the TDS content directory will live
#   THIS IS CRITICAL and there is NO DEFAULT - the
#   TDS will not start without this.
#
CONTENT_ROOT=-Dtds.content.root.path=/var/lib/tomcat8/content

# set java prefs related variables (used by the wms service, for example)
JAVA_PREFS_ROOTS="-Djava.util.prefs.systemRoot=$CATALINA_HOME/content/thredds/javaUtilPrefs \
                  -Djava.util.prefs.userRoot=$CATALINA_HOME/content/thredds/javaUtilPrefs"

#
# Some commonly used JAVA_OPTS settings:
#
NORMAL="-d64 -Xmx4096m -Xms512m -server -ea"
HEAP_DUMP="-XX:+HeapDumpOnOutOfMemoryError"
HEADLESS="-Djava.awt.headless=true"

#
# Standard setup.
#
JAVA_OPTS="$CONTENT_ROOT $NORMAL $MAX_PERM_GEN $HEAP_DUMP $HEADLESS $JAVA_PREFS_ROOTS"

export JAVA_OPTS

不幸的是,保存此文件后tomcat无法启动:

tomcat8.service - LSB: Start Tomcat.
   Loaded: loaded (/etc/init.d/tomcat8; bad; vendor preset: enabled)
   Active: failed (Result: exit-code) since Do 2016-05-26 16:45:51 CEST; 6min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 5903 ExecStart=/etc/init.d/tomcat8 start (code=exited, status=1/FAILURE)

Mai 26 16:45:46 student systemd[1]: Starting LSB: Start Tomcat....
Mai 26 16:45:46 student tomcat8[5903]:  * Starting Tomcat servlet engine tomcat8
Mai 26 16:45:51 student tomcat8[5903]:    ...fail!
Mai 26 16:45:51 student systemd[1]: tomcat8.service: Control process exited, code=exited status=1
Mai 26 16:45:51 student systemd[1]: Failed to start LSB: Start Tomcat..
Mai 26 16:45:51 student systemd[1]: tomcat8.service: Unit entered failed state.
Mai 26 16:45:51 student systemd[1]: tomcat8.service: Failed with result 'exit-code'.

我需要这个配置用于外部服务器应用程序(thredds数据服务器)。我想JAVA_HOME变量可能有些不对劲。我复制了sudo update-alternatives --config java找到的路径(参见this overload)。

有人能告诉我哪里出错了?

2 个答案:

答案 0 :(得分:4)

我发现了这个问题,因为我收到了类似的错误消息。在做了一些挖掘之后,我发现启动tomcat的服务脚本完全忽略了/usr/share/tomcat8/bin/setenv.sh/etc/init.d/tomcat8。相反,它会查看/etc/default/tomcat8中的环境设置。

这意味着即使tomcat以setenv.sh中指定的JVM开头,init脚本也无法看到它正在运行,因为它期望使用不同的JVM。

不是在 setenv.sh 中设置JAVA_HOME,而是在/etc/default/tomcat8中设置它。此时,我已完全删除 setenv.sh 并将所有tomcat设置放在 / etc / 中。

答案 1 :(得分:1)

解决问题的两点:

  1. setenv.sh文件中,我忘了将content_root的值放在引号之间:
  2. CONTENT_ROOT="-Dtds.content.root.path=/var/lib/tomcat8/content"

    1. 我必须更改此文件夹的写入权限:
    2. sudo chmod a+rwx /var/lib/tomcat8/content/