Saya menulis file unit systemd untuk aplikasi Java dan saya ingin mengontrol versi Java yang digunakan untuk memulai. File layanan saya (disederhanakan) adalah
[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
Ketika mencoba untuk memulainya saya mendapatkan kesalahan kembali
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.
Saya tahu itu JAVA_HOME
diatur dengan benar; jika saya mengubah ExecStart
baris untuk memulai /usr/bin/java
dan kemudian menambahkan sesuatu seperti -DsomeOption=${JAVA_HOME}
saya bisa melihatnya dengan baik.
Solusi yang jelas adalah membuat skrip wrapper tetapi saya merasa itu mengalahkan titik menggunakan file layanan.
Bagaimana saya bisa mengatur JAVA_HOME untuk aplikasi Java saya menggunakan file unit?