Configuração do Red Hat do Tomcat 8 - palavra-chave ${JAVA_OPTS} não reconhecida

Configuração do Red Hat do Tomcat 8 - palavra-chave ${JAVA_OPTS} não reconhecida

Estou tentando configurar tomcat8no 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_OPTSem 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 tomcat8nã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 -Xmsem vez de-Xm

informação relacionada