Red Hat-Konfiguration von Tomcat 8 – Schlüsselwort ${JAVA_OPTS} nicht erkannt

Red Hat-Konfiguration von Tomcat 8 – Schlüsselwort ${JAVA_OPTS} nicht erkannt

Ich versuche, die Konfiguration tomcat8unter Red Hat Enterprise Linux 7 durchzuführen. Ich erhalte die Konfigurationsdatei einer Debian-Version (die ich eingerichtet habe). Sie lautet:


[...]

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'

[...]

Mit Red Hat funktioniert diese Konfiguration nicht; ich erhalte diese Fehlermeldung:

Error: Could not find or load main class ${JAVA_OPTS}
Caused by: java.lang.ClassNotFoundException: ${JAVA_OPTS}

Aber wenn ich das lösche und in einer einzigen Zeile ${JAVA_OPTS}zusammenfüge :JAVA_OPTS

JAVA_OPTS='-Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -Xmx1024m -Xm1024m' -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml'

Es klappt.

Ich habe auch versucht, es ${JAVA_OPTS}durch $JAVA_OPTS%JAVA_OPTS% zu ersetzen. Haben Sie eine Idee, warum tomcat8das nicht erkannt wird ${JAVA_OPTS}?

Danke!

Antwort1

Einfache Anführungszeichen sagen der Shell, dass sie die darin enthaltenen Befehle/Variablen nicht interpretieren soll. Sie haben also keine expand/interpret- ${JAVA_OPTS}Konstruktion. Versuchen Sie es auf diese Weise (mit doppelten Anführungszeichen):

[...]

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"

[...]

Außerdem sollten Sie meines Wissens nach bei aktuellen Java-Versionen -Xmsanstelle von-Xm

verwandte Informationen