fli*_*ixe 2 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
Run Code Online (Sandbox Code Playgroud)
不幸的是,保存此文件后,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'.
Run Code Online (Sandbox Code Playgroud)
我需要此配置用于外部服务器应用程序(thredds 数据服务器)。我想 JAVA_HOME 变量可能有问题。我复制了我发现的路径sudo update-alternatives --config java
(请参阅本教程)。
有人可以告诉我出了什么问题吗?
我发现这个问题是因为我收到了类似的错误消息。经过一番挖掘,我发现 /usr/share/tomcat8/bin/setenv.sh
启动 tomcat: 的服务脚本完全忽略了它 /etc/init.d/tomcat8
。相反,它查看/etc/default/tomcat8
.
这意味着即使 tomcat 以 setenv.sh 中指定的 JVM 启动,init 脚本也无法看到它正在运行,因为它期望使用不同的 JVM。
不要JAVA_HOME
在setenv.sh中设置,而是在/etc/default/tomcat8
. 在这一点上,我已经完全删除了setenv.sh并将我所有的 tomcat 设置放在/etc/ 中。
编辑:自从我写了这个答案,我已经迁移到 Tomcat 9。同样的事情适用于 Ubuntu 下的这个最新版本。以下是我的当前内容/etc/default/tomcat9
:
# The home directory of the Java development kit (JDK). You need at least
# JDK version 8. If JAVA_HOME is not set, some common directories for
# OpenJDK and the Oracle JDK are tried.
JAVA_HOME=`readlink -f /usr/bin/javac | sed 's|/bin/javac||g'`
# You may pass JVM startup parameters to Java here. If unset, the default
# options will be: -Djava.awt.headless=true -XX:+UseG1GC
JAVA_OPTS="-Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -Xms256m -Xmx2048m -XX:MaxPermSize=512M -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6339 次 |
最近记录: |