2013-04-19 10 views
5

में एकाधिक जार का उपयोग करके मैं jsvc का उपयोग कर एक लिनक्स सेवा के रूप में चलाने के लिए जावा एप्लिकेशन प्राप्त करने का प्रयास कर रहा हूं। मुझे How to convert a java program to daemon with jsvc? मिला जो मुझे सबसे अधिक रास्ता प्राप्त करने में सक्षम था, लेकिन मैं अभी भी वर्गपाथ को समझने के लिए संघर्ष कर रहा हूं।jsvc classpath

मैं stderr करने के लिए निम्न त्रुटियों हो रही है:

19/04/2013 10:43:18 12233 jsvc.exec error: Cannot find daemon loader org/apache/commons/daemon/support/DaemonLoader

19/04/2013 10:43:18 12231 jsvc.exec error: Service exit with a return value of 1

यह प्रतीत होता है कि क्रम कॉमन्स-daemon.jar खोजने में असमर्थ है।

मेरा आवेदन संरचित है ताकि एप्लिकेशन को एक ही जार फ़ाइल में निर्भरता के साथ, lib lib निर्देशिका में commons-daemon समेत।

  • daemon-script.sh
  • myapp.jar
  • lib/कॉमन्स-daemon.jar
  • lib/अन्य-जार

यहाँ मेरी daemon- के प्रासंगिक भागों है script.sh:

LIB_DIR=$(pwd)/lib/*

CLASS_PATH=$(pwd)/myapp.jar

$EXEC -home $JAVA_EXEC -cp $CLASS_PATH:$LIB_DIR -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS

मैंने कई भिन्नताओं की कोशिश की है: सापेक्ष पथ, speci लिबिक रूप से संदर्भित lib/commons-daemon.jar, कोई वाइल्डकार्ड, आदि। क्या किसी को यह विचार है कि यह काम ठीक से कैसे करें?

इसके अलावा, myapp.jar एक स्वयं निष्पादन योग्य जार है (ज्यादातर परीक्षण प्रयोजनों के लिए, और हाँ, मैं अभी भी एक सेवा के रूप में चलाने के लिए इसकी आवश्यकता है), तो MANIFEST.MF कक्षा-पथ और main- शामिल कक्षा विशेषताओं। क्या प्रकट करने के लिए jsvc प्राप्त करने का कोई तरीका है?

उत्तर

2

आप का उपयोग कर JSVC के साथ एकाधिक जार का उपयोग कर सकते हैं: उनके बीच।

अपने विशिष्ट समस्या के लिए समाधान इस को CLASS_PATH चर बदलते किया जाएगा:

CLASS_PATH=$(pwd)/myapp.jar:$(pwd)/lib/*.jar 

आशा इस:

CLASS_PATH=$(pwd)/myapp.jar:$(pwd)/lib/commons-daemon.jar:$(pwd)/lib/other-jars 

वैकल्पिक रूप से आप इस तरह वाइल्डकार्ड का उपयोग करके एक निर्देशिका में सभी जार शामिल कर सकते हैं

+0

मेरी माइलेज विविधता jsvc 1.0.8 (उबंटू पर) का उपयोग करके भिन्न है। जेएसवीसी वाइल्डकार्ड का सम्मान नहीं करेगा या सिर्फ lib/dir निर्दिष्ट करेगा। इसके बजाय, मुझे "CLASS_PATH = $ (echo" $ LIB_PATH "/ *। Jar | tr '' ':')" का उपयोग करके क्लासपाथ का स्पष्ट रूप से निर्माण करना पड़ा। मैं -Dlog4j.configuration निर्दिष्ट करने की कोशिश कर रहा एक स्नैग में भी भाग गया। मैं आमतौर पर गुण फ़ाइल के लिए एक पूर्ण पथ निर्दिष्ट करता हूं, लेकिन इसे jsvc के साथ काम करने के लिए, मुझे इसे फ़ाइल के साथ एक यूआरएल के रूप में लिखना था: /// उपसर्ग। मैं जल्द ही आरएचईएल पर भी परीक्षण करूँगा। – ayang

संबंधित मुद्दे