Я пишу файл системного блоку для програми 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 за допомогою файлу одиниці?