我正在尝试tomcat8
在 Red Hat Enterprise Linux 7 上进行配置。我从 Debian 版本(我已设置)获取配置文件,该文件是:
[...]
JAVA_OPTS='-Djava.awt.headless=true'
JAVA_OPTS='${JAVA_OPTS} -Dfile.encoding=UTF-8'
JAVA_OPTS='${JAVA_OPTS} -XX:+UseConcMarkSweepGC'
# memory
JAVA_OPTS='${JAVA_OPTS} -Xmx1024m -Xm1024m'
# logging
JAVA_OPTS='${JAVA_OPTS} -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml'
[...]
对于 Red Hat,此配置不起作用;我收到此错误:
Error: Could not find or load main class ${JAVA_OPTS}
Caused by: java.lang.ClassNotFoundException: ${JAVA_OPTS}
但是当我删除${JAVA_OPTS}
并连接JAVA_OPTS
在一行上时:
JAVA_OPTS='-Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -Xmx1024m -Xm1024m' -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml'
有用。
我还尝试${JAVA_OPTS}
用$JAVA_OPTS
%JAVA_OPTS% 替换。您知道为什么tomcat8
无法识别吗${JAVA_OPTS}
?
谢谢!
答案1
单引号告诉 shell 不要解释里面的命令/变量。所以你没有扩展/解释${JAVA_OPTS}
构造。尝试以这种方式进行(带双引号):
[...]
JAVA_OPTS='-Djava.awt.headless=true'
JAVA_OPTS="${JAVA_OPTS} -Dfile.encoding=UTF-8"
JAVA_OPTS="${JAVA_OPTS} -XX:+UseConcMarkSweepGC"
# memory
JAVA_OPTS="${JAVA_OPTS} -Xmx1024m -Xm1024m"
# logging
JAVA_OPTS="${JAVA_OPTS} -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml"
[...]
另外,据我所知,您应该使用当代版本的 java-Xms
而不是-Xm