Javaアプリケーション用のsystemdユニットファイルを作成していますが、起動に使用する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アプリケーションのJAVA_HOMEを設定するにはどうすればよいですか?