कई जावा संस्करणों के बीच स्विच करें


65

Ubuntu 14.04 पर एंड्रॉइड स्टूडियो स्थापित करते समय मुझे संदेश मिलता है कि मेरा जावा संस्करण ( javac 1.7.0_79) समस्याएं पैदा कर रहा है। मुझे जावा का एक नया ओरेकल संस्करण स्थापित करने का एक उपाय मिला :

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

हालांकि मुझे डर है कि यह open-jdkजावा के मेरे मौजूदा संस्करण को अधिलेखित कर सकता है । चूंकि मुझे नहीं पता कि मेरे कौन से प्रोग्राम जावा पर निर्भर हैं, इसलिए मुझे डर है कि इससे ये अन्य प्रोग्राम क्रैश हो सकते हैं।

क्या यह सुनिश्चित करने का कोई तरीका है कि apt-getमेरे पिछले जावा को अधिलेखित नहीं किया जाए? मैं मूल रूप से दोनों को स्थापित करना चाहता हूं और मैन्युअल रूप से उन दोनों के बीच स्विच करने में सक्षम हो सकता हूं, जो कि मुझे किस संस्करण की आवश्यकता पर निर्भर करता है।

जवाबों:


82

Apt-get मौजूदा जावा संस्करणों को अधिलेखित नहीं करेगा।

स्थापित जावा संस्करणों के बीच स्विच करने के लिए, update-java-alternativesकमांड का उपयोग करें ।

सभी जावा संस्करण सूची:

update-java-alternatives --list

डिफ़ॉल्ट रूप में जावा संस्करण सेट करें (रूट अनुमतियों की आवश्यकता है):

sudo update-java-alternatives --set /path/to/java/version

... जहां /path/to/java/versionपिछली कमांड (जैसे /usr/lib/jvm/java-7-openjdk-amd64) द्वारा सूचीबद्ध लोगों में से एक है ।


अतिरिक्त जानकारी:

update-java-alternativesडेबियन के उपयोग करता है एक सुविधा उपकरण है विकल्प प्रणाली ( update-alternativesनिर्दिष्ट जावा संस्करण के लिए लिंक का एक समूह स्थापित करने के लिए) (जैसे java, javac, ...)।


1
मेरे लिए इसके कारण java -version java8 हो गया, लेकिन JAVA_HOME अभी भी 7 :(
Nenotlep

tq इस समस्या को भी हल करें। @Nenotlep जो मैंने किया वह पर्यावरण चर को मैन्युअल रूप से या तो .bashrc या / etc / वातावरण में संपादित किया
Nuttynibbles

update-java-alternativesमेरे लिए उपलब्ध नहीं था। मैंने बस उस कमांड को बदल दिया update-alternatives java
nofinator

@nofinator जो केवल javaनिष्पादन योग्य को प्रभावित करता है । आप किस उबंटू संस्करण का उपयोग करते हैं?
डेनजेल

1
@Nenotlep को बदलने के लिए JAVA_HOMEआपको निम्नलिखित कमांड चलाना होगा: source /etc/environment
jbb

48

उपयोग

sudo update-alternatives --config java

जो वर्तमान सक्रिय एक के साथ सभी स्थापित संस्करणों को सूचीबद्ध करता है और स्विच करने के लिए संवाद प्रदान करता है:

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

उपयोग

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

$JAVA_HOMEवर्तमान सक्रिय संस्करण से सेट करने के लिए


जैसा कि @danzel द्वारा स्वीकार किए गए उत्तर पर उल्लेख किया गया है, यह केवल javaनिष्पादन योग्य को प्रभावित करता है , न कि कॉन्फ़िगरेशन के अन्य भागों को। update-java-alternativesयदि उपलब्ध हो तो उपयोग करें ।
प्रेमाक ब्रेडा

4

@Muet के उत्तर के आधार पर, मैंने पाया कि यह मूल रूप से काम करने के लिए है:

इसे इसमें जोड़ें ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

उपनाम में जोड़ें:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

तब आप केवल उसी का उपयोग करके एक ही शेल में स्विच कर सकते हैं: useJava7याuseJava8


बनाने के लिए उपनाम स्थायी उन्हें ~ / .bashrc में, यहाँ रख सकते हैं और अधिक जानकारी askubuntu.com/questions/17536/...
Konstantin Zyubin

E: पैकेज oracle-java7-set-default का पता लगाने में असमर्थ
प्रकाश पांडे

विभिन्न जावा संस्करणों के बीच स्थापित करने, उपयोग करने और स्विच करने के लिए असमान रूप से सबसे आसान तरीका है SDKMAN! यहां देखें: sdkman.io/usage.html
brianjohnsen

हाल ही में JAVA_HOME सेट करने के लिए एक और कमांड आया, जिस पर अभी भी प्रयास करना है .bashrc:export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
ThiamTeck

3

जावा को कॉन्फ़िगर करना

आप कॉन्फ़िगर कर सकते हैं कि कौन सा संस्करण कमांड लाइन में उपयोग के लिए डिफ़ॉल्ट है update-alternatives, जो प्रबंधित करता है कि कौन से प्रतीकात्मक लिंक विभिन्न कमांड के लिए उपयोग किए जाते हैं।

sudo update-alternatives --config java

आउटपुट कुछ इस तरह दिखेगा।

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

अब आप डिफ़ॉल्ट के रूप में उपयोग करने के लिए संख्या चुन सकते हैं। यह अन्य जावा कमांड्स के लिए भी किया जा सकता है, जैसे कि कंपाइलर ( javac), डॉक्यूमेंटेशन जनरेटर ( javadoc), JAR साइनिंग टूल ( jarsigner), और बहुत कुछ। आप जिस कमांड को कस्टमाइज़ करना चाहते हैं , उसे भरने के लिए आप निम्न कमांड का उपयोग कर सकते हैं ।

sudo update-alternatives --config command

JAVA_HOMEपर्यावरण चर सेट करना

कई प्रोग्राम, जैसे जावा सर्वर, जावा इंस्टॉलेशन स्थान निर्धारित करने के लिए JAVA_HOME पर्यावरण चर का उपयोग करते हैं।

अपने पसंदीदा इंस्टॉलेशन से पथ को कॉपी करें और फिर Sublime Text या अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके / etc / वातावरण खोलें।

sudo subl /etc/environment

इस फ़ाइल के अंत में, निम्न पंक्ति को जोड़ें, हाइलाइट किए गए पथ को अपने स्वयं के कॉपी किए गए पथ से बदलना सुनिश्चित करें।

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

फ़ाइल को सहेजें और बाहर निकलें, और इसे पुनः लोड करें source /etc/environment:।
अब आप परीक्षण कर सकते हैं कि निम्न कमांड निष्पादित करके पर्यावरण चर निर्धारित किया गया है या नहीं echo $JAVA_HOME:। यह आपके द्वारा निर्धारित पथ को वापस कर देगा।

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