Estou tentando configurar tomcat8
no Red Hat Enterprise Linux 7. Recebo o arquivo de configuração de uma versão Debian (que configurei), que é:
[...]
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'
[...]
Com o Red Hat esta configuração não funciona; Eu recebo este erro:
Error: Could not find or load main class ${JAVA_OPTS}
Caused by: java.lang.ClassNotFoundException: ${JAVA_OPTS}
Mas quando apago ${JAVA_OPTS}
e concateno JAVA_OPTS
em uma única linha:
JAVA_OPTS='-Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -Xmx1024m -Xm1024m' -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml'
Funciona.
Também tentei substituir ${JAVA_OPTS}
por $JAVA_OPTS
% JAVA_OPTS%. Você tem alguma ideia de por que tomcat8
não está reconhecendo o ${JAVA_OPTS}
?
Obrigado!
Responder1
Aspas simples dizem ao shell para não interpretar os comandos/variáveis internos. Portanto, você não tem ${JAVA_OPTS}
construção de expansão/interpretação. Tente fazer desta forma (com aspas duplas):
[...]
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"
[...]
Também AFAIK em versões contemporâneas de java você deve usar -Xms
em vez de-Xm