আমি একটি জাভা অ্যাপ্লিকেশনের জন্য একটি সিস্টেমড ইউনিট ফাইল লিখছি এবং আমি এটি চালু করতে ব্যবহৃত জাভাটির সংস্করণটি নিয়ন্ত্রণ করতে চাই। আমার (সরলীকৃত) পরিষেবা ফাইলটি
[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 সেট করতে পারি?