Я пишу системный файл модуля для приложения Java, и я хотел бы контролировать версию Java, используемую для его запуска. Мой (упрощенный) сервисный файл
[Service]
Type=simple
EnvironmentFile=%h/Documents/apps/app/app-%i/app.cfg
ExecStart=${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar %h/Documents/apps/app/app-%i/myapp.jar
SuccessExitStatus=143
При попытке запустить получаю ошибку обратно
Apr 28 12:43:37 rombert systemd[1613]: [/home/robert/.config/systemd/user/app@.service:7] Executable path is not absolute, ignoring: ${JAVA_HOME}/bin/java ${JAVA_OPT
Apr 28 12:43:37 rombert systemd[1613]: app@1.0.0.service lacks both ExecStart= and ExecStop= setting. Refusing.
Я знаю, что JAVA_HOME
это правильно установлено; если я изменю ExecStart
строку, чтобы начать с, /usr/bin/java
а затем добавить что-то вроде, -DsomeOption=${JAVA_HOME}
я вижу это просто отлично.
Очевидный обходной путь заключается в создании сценария-обертки, но я чувствую, что он лишает смысла использование служебного файла.
Как я могу установить JAVA_HOME для моего Java-приложения, используя файл модуля?