2012-08-30 25 views
7

पता नहीं लगा सकता मैं एक आवेदन है कि jsvc का लाभ उठाता है एक डेमॉन के रूप में एक जावा सेवा शुरू करने के लिए लिख रहा हूँ। मैं क्योंकि मेरे आवेदन 1024 के तहत बंदरगाहों का इस्तेमाल करता है और अभी तक मैं वास्तव में यह रूट के रूप में नहीं चलाने के लिए इतना है कि बनाई गई फ़ाइलों को किसी अन्य उपयोगकर्ता के स्वामित्व में हैं चाहते हैं jsvc की तरह कुछ का उपयोग करने की आवश्यकता है। मैं भी इतना है कि सभी ग्राहक की जरूरत कम से कम निर्भरता और विन्यास रखना चाहते हैं एक JVM और jsvc द्विआधारी स्थापित है।जावा घर

हालांकि, ऐसा लगता है कि jsvc एक प्रमुख पकड़ है;

$ ./startup.sh 
Cannot locate Java home 

मैं कम से कम मैन्युअल JVM होम निर्देशिका की स्थापना करके Ubuntu पर समस्या के समाधान करने में सक्षम है: यह एक दिया यूनिक्स ऑपरेटिंग सिस्टम है, जो काफी निराशा होती है पर जावा के घर फ़ोल्डर का पता नहीं लगा सकते हैं:

jsvc ... -home /usr/lib/jvm/default-java/ ... 

वहाँ एक बैश स्क्रिप्ट से गतिशील जावा होम निर्देशिका निर्धारित करने के लिए तो मैं सबसे Unixes/Linuxes भर में इस काम कर सकते हैं कोई तरीका है? मैं रात में कुछ बेहतर करने में सक्षम हूं जैसे:

JAVA_HOME="$(...)" 

jsvc ... -home "$JAVA_HOME" ... 

... प्रत्येक व्यक्तिगत ऑपरेटिंग सिस्टम के लिए हार्ड कोडिंग के बजाय। वहाँ एक तरीका है कि, एक java बाइनरी को देखते हुए, मैं अपने JVM/JRE का घर निर्देशिका पा सकते है?

+0

संभावित डुप्लिकेट [लिनक्स ओपनजेडीके डेबियन-आधारित वितरण के लिए JAVA_HOME envrionment चर के लिए सही लक्ष्य क्या है?] (Http://stackoverflow.com/questions/663658/what-is-the-correct-target- for-the-java-home-envrionment-variable-for-a-linux-op) – paulsm4

+1

डुप्लिकेट नहीं; मैं सामान्य रूप से डेबियन वितरण के लिए बल्कि रेड हैट, ओएसएक्स और अन्य लिनक्स/यूनिक्स के लिए जावा घर का पता लगाने की कोशिश कर रहा हूं। –

+0

कृपया एसओ लिंक पढ़ें। विशेष रूप से "अद्यतन-जावा-विकल्प/अद्यतन-विकल्प" के बारे में भागों। – paulsm4

उत्तर

5

सुनिश्चित नहीं हैं कि अगर यह * nixes में काम करता है, लेकिन यह समाधान नहीं मिला:

JAVA_HOME="$(readlink -f "$(which java)" | sed "s:bin/.*$::")" 

मैं Ubuntu पर यह परीक्षण किया है और यह काम करता है, लेकिन यह OSX के लिए काम नहीं करता।

+0

धन्यवाद आदमी, यह CentOS 6.5 में काम किया :) –

0

उपयोग dirname और which आदेशों जावा के बिन निर्देशिका को खोजने में:

echo `dirname \`which java\`` 
JAVA_HOME=`dirname \`which java\`` 

... केवल तभी काम करता जावा $PATH पर पहले से ही है।

+1

जो '/ usr/bin' देता है, जो निस्संदेह (और पुनरुत्पादित) विफल रहता है। चूंकि 'कौन सा जावा'/usr/bin/java' देता है, यही मुझे मिलता है। –

3

मेरे समाधान मुख्य jsvc पेज के रूप में देशी linux स्रोत संकलन किया गया था कहते हैं http://commons.apache.org/proper/commons-daemon//jsvc.html

यहाँ कदम प्रक्रिया

डाउनलोड www.fightrice.com/mirrors/apache/commons/daemon के आधार पर अपने कदम है में /source/commons-daemon-1.0.13-sc.c.tar.gz

एक बार जब आप फ़ाइल निकालेंगे तो ...../commons-daemon-1.0.13-src/src/native/unix

पर जाएं

एक रूट के रूप में टर्मिनल में foll करना कारण:

$ समर्थन/buildconf.sh

$ कॉन्फ़िगर --with-जावा =/usr/lib/JVM/डिफ़ॉल्ट-जावा

$

परीक्षण jsvc द्विआधारी उत्पन्न करना एप्लिकेशन

$ ./jsvc -help

यह काम करता है! सफाई से।

0

एक अन्य तरीका है:

type -p java 

यह सही जावा स्थापना फ़ोल्डर लौटने की अपेक्षा करें।

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

  • कोई संबंधित समस्या नहीं^_^