Я пытаюсь выполнить настройку 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