मैं जावा एप्लिकेशन के लिए एक सिस्टमड यूनिट फ़ाइल लिख रहा हूं और मैं इसे शुरू करने के लिए उपयोग किए जाने वाले जावा के संस्करण को नियंत्रित करना चाहता हूं। मेरी (सरलीकृत) सेवा फ़ाइल है
[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 कैसे सेट कर सकता हूं?