Ich versuche, die Konfiguration tomcat8
unter 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 tomcat8
das 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 -Xms
anstelle von-Xm