Red Hat Enterprise Linux 7 で設定しようとしていますtomcat8
。設定ファイルは、私が設定した 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
1 行に連結すると、次のようになります。
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
一重引用符は、シェルに内部のコマンド/変数を解釈しないように指示します。したがって、展開/解釈構造はありません${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