Конфигурация Red Hat Tomcat 8 — ключевое слово ${JAVA_OPTS} не распознано

Конфигурация Red Hat Tomcat 8 — ключевое слово ${JAVA_OPTS} не распознано

Я пытаюсь выполнить настройку tomcat8на Red Hat Enterprise Linux 7. Я беру файл конфигурации из версии 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в одну строку:

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}конструкции expand/interpret. Попробуйте сделать это таким образом (с двойными кавычками):

[...]

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

Связанный контент