डेबियन / उबंटू पर JAVA_HOME कैसे निर्धारित करें?


95

उबंटू में एक ही समय में कई JVM होना संभव है। डिफ़ॉल्ट एक के साथ चुना जाता है update-alternatives। लेकिन यह एक JAVA_HOMEपर्यावरण नीति के कारण पर्यावरण चर को निर्धारित नहीं करता है ।

मैं एक लॉन्चर स्क्रिप्ट (बैश) लिख रहा हूं, जो एक जावा एप्लिकेशन शुरू करता है। इस जावा एप्लिकेशन को JAVA_HOMEपर्यावरण चर की जरूरत है । तो जेवीएम का रास्ता कैसे प्राप्त करें जो वर्तमान में चयनित है update-alternatives?

जवाबों:


137

JRE के लिए, इस तरह से कुछ करना चाहिए:

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

17
मुझे JRE के बजाय JDK के घर की आवश्यकता थी, लेकिन मुझे इसका उपयोग करना पड़ा: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::" धन्यवाद!
Witek

जब मैंने कमांड की कोशिश की echo $(readlink -f /usr/bin/java | sed "s:bin/java::"), तो आउटपुट था /usr/lib/jvm/java-7-oracle/jre/और नहीं/usr/lib/jvm/java-7-oracle/
सुमित रामटेके

Rsaddey में दिया गया कोड सही ढंग से काम करता है
सुमित रामटेके

43

danadam के समाधान को आसानी से आवश्यकतानुसार JDK (यानी JRE) पथ को प्राप्त करने के लिए अपनाया जा सकता है:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • JDK (लेकिन JRE नहीं) में शामिल जावा जावा कंपाइलर (जावा के बजाय) की तलाश है।
  • कोई अनुगामी / नहीं है (sed s द्वारा छीन लिया गया है: / bin ... बजाय s: bin ...)

12

export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

में .bashrcमेरे लिए काम किया गया था।


9

तो, आप कह रहे हैं कि यह कमांड आपके लिए कुछ नहीं करता है?

sudo update-alternatives --config java 

2
ऐसा लगता है कि आपके JAVA_HOME सेट करने के लिए? मैंने पाया है कि अद्यतन-जावा-विकल्प जावा को अपडेट करने का एक बेहतर तरीका है क्योंकि अपडेट-विकल्प सभी जावा से संबंधित विकल्पों को अपडेट नहीं करते हैं। देखें askubuntu.com/questions/141791
जेम्स मैकमोहन

सही है, लेकिन मुझे लिनक्स के ऐसे उदाहरणों का सामना करना पड़ा जिनमें अद्यतन-विकल्प थे लेकिन अपडेट-जावा-विकल्प स्थापित नहीं थे।
दजंगोफन

3

मैंने जावा स्थापित किया

sudo apt-get install openjdk-7-jre-headless

और फिर स्थान खोजने के लिए

ls -al /etc/alternatives/java

2

दानदामों के उत्तर के विस्तार के रूप में:

सबसे पहले, 2 जावा जेआरई को 3 जावा विकल्प के रूप में स्थापित करें, "3" की प्राथमिकता के साथ:

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

फिर, आप उन्हें सूचीबद्ध कर सकते हैं:

update-alternatives --list java

आप इसका उपयोग करके हाथ से विकल्प सेट कर सकते हैं:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

फिर, आपकी स्क्रिप्ट इसे मक्खी पर सेट कर सकती है, जैसे:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

यह बेहतर दिखाता है कि 'सेड' कमांड क्या कर रहा है। यद्यपि आपको अभी भी javaw और javac, आदि के लिए लिंक सेट करने की आवश्यकता है, साथ ही, प्रत्येक को अलग से किया गया है।


1

कुछ समय पहले मैंने उबंटू फोरम पर एक ट्यूटोरियल बनाया था कि जावा वेबसाइट से नवीनतम JRE / JDK कैसे स्थापित किया जाए। यह पथ-चर में JRE / JDK स्थान को जोड़कर, सिस्टम-वाइड को सक्षम करने के तरीके को भी कवर करता है। यदि आप चाहें, तो आप विषय के अंत में उल्लिखित स्क्रिप्ट में JAVA_HOME भी जोड़ सकते हैं।

इसे देखें: http://ubuntuforums.org/showthread.php?t=1437100


1

यदि java update-alternativesको अपने PATH वैरिएबल के साथ मैन्युअल रूप से कॉन्फ़िगर या जोड़ा गया है, तो हार्डकोड "/usr/bin/java"की आवश्यकता नहीं है। मैं अपने .bashrc में इस समाधान का उपयोग करता हूं:

export JAVA_HOME=$(readlink -m $(which java)/../..)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.