OS X में Java 7 और 8 के बीच स्विच करना


25

मैंने जावा -8 स्थापित किया है। अब मैं डिफ़ॉल्ट रूप से जावा -7 में वापस जाना चाहता था इसलिए मैं इसमें टाइप करता हूं ...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

लेकिन मैं अभी भी देखता हूं ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

यह काम करता है ...

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

लेकिन मैं अधिक स्थायी समाधान चाहूंगा।

कोई भी देखता है कि मैं क्या गलत कर रहा हूं?

जवाबों:


50

आसानी से संस्करण स्विच करें

  1. किसी भी क्रम में संस्करण 1.6, 1.7, 1.8 स्थापित करें। नोट: मेरा मानना ​​है कि पिछले एक स्थापित यह निर्धारित करता है कि ब्राउज़र प्लगइन्स के लिए किसका उपयोग किया जाएगा, मैं नीचे उन लोगों को बदलने के बारे में परवाह नहीं कर रहा हूं।

  2. फिर, अपने ~/.bashrcया ~/.bash_profile, या जहां कभी भी जोड़ें:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. के माध्यम से परिवर्तन की जाँच करें java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

जाहिर है कि परिवर्तन केवल शेल की अवधि के लिए है। लेकिन आप देख सकते हैं कि आप इसे विश्व स्तर पर कहां सेट कर सकते हैं।


2
एक समस्या: यदि आपके पास पहले से ही JDK8 है तो JDK7 इंस्टॉल करने से मना कर देता है। यह आपको अधिक जानकारी के लिए oracle.com पर एक URL की ओर इशारा करता है जो आपको 404 देता है। और निश्चित रूप से, JDK8 के लिए स्थापना रद्द करने के निर्देश बिल्कुल भी काम नहीं करते हैं, इसलिए अब मैं मूल रूप से खो गया हूं।
एरिक डब्ल्यू

1
सिर्फ jenv jenv.be का
Madzohan

9

आप jEnv ( http://www.jenv.be/ ) का उपयोग कर सकते हैं , जो " JDK_HOME पर्यावरण चर सेट करने के लिए JDK के विभिन्न संस्करणों के बीच स्विच करने के तरीके को सेट करने में मदद करने के लिए एक कमांड लाइन उपकरण है" (परियोजना के होमपेज से लिया गया) )।

यदि आप रूबी से परिचित हैं, JEnv RVM या rbenv का उपयोग करने जैसा है। यह आपकी मशीन पर स्थापित कई अलग-अलग JDK को एक JDK से दूसरे पर स्विच करने के लिए अपनी स्क्रिप्ट लिखने के बिना आपको संभालने में मदद करता है। आप वर्तमान निर्देशिका में उदाहरण के लिए या कॉन्फ़िगरेशन फ़ाइल के आधार पर वर्तमान जावा संस्करण को बदल सकते हैं।


क्या आपके द्वारा इसे विस्तार दिया जा सकता है? यह एक टिप्पणी की तरह दिखता है, उत्तर नहीं।
ऑस्टिन टी फ्रेंच

यदि आप रूबी से परिचित हैं, तो वर्तमान निर्देशिका पर उदाहरण के लिए या कॉन्फ़िगरेशन फ़ाइल के आधार पर वर्तमान जावा संस्करण को बदलने के लिए RVM या rbenv का उपयोग करने जैसा है। यदि आप JENV होम पेज पर जाते हैं तो एक अच्छा ट्यूटोरियल है।
पिएत्रो डि बेलो

यह पोस्ट उन सभी के लिए होनी चाहिए जो उत्तर की तलाश में हैं, इसलिए पोस्ट में अधिक विस्तार की उम्मीद है कि इसे एक पूर्ण और अच्छा उत्तर माना जाएगा।
ऑस्टिन टी फ्रेंच

मैंने अधिक जानकारी जोड़ी और उत्तर का थोड़ा विस्तार किया ... उम्मीद है कि यह अब बेहतर होगा। प्रतिक्रिया के लिए धन्यवाद।
पिएत्रो डि बेलो

4

आप जावा-संस्करणों के बीच स्विच नहीं कर सकते। में प्रलेखन आप देखते हैं:

एक बार में केवल एक ही JRE स्थापित किया जा सकता है। सिस्टम JRE को इंस्टॉल नहीं करेगा जिसमें वर्तमान संस्करण की तुलना में कम संस्करण है। यदि आप JRE के निचले संस्करण को स्थापित करना चाहते हैं, तो पहले वर्तमान संस्करण की स्थापना रद्द करें।

यदि आप पुराने संस्करण पर वापस जाना चाहते हैं, तो आपको जावा 8 की स्थापना रद्द करनी होगी ।


grrr धन्यवाद, लेकिन यह OSX की मेरी राय में मदद नहीं करता है।
जैकी

4
@ जैकी: वास्तव में यह ओएस एक्स के साथ बहुत कम है, लेकिन ओरेकल के साथ अधिक है। जब सक्रिय ओएस संस्करणों के बीच स्विच करने के लिए एप्पल ने ओएस एक्स के लिए जेडडीके को बनाए रखा, तो यह पूरी तरह से आसान और आसान था। कृपया अपने भद्दा संस्थापक और नहीं ओएस एक्स के लिए ओरेकल दोष
Alessandro वर्म्यूलेन

@AlessandroVermeulen सभी उचित सम्मान के साथ यह "इंस्टॉलर" नहीं है बिल्ली मुझे लगता है कि यह मेरे लिनक्स बक्से की तरह एक संस्करण पूर्वस्थापित अवधि के साथ नहीं आया था। फिर मैं वैसे भी "स्थापित" कर सकता था जैसा कि मैं यूनिक्स बाइनरी के साथ चाहता था। और फिर OSX के पुराने संस्करण थे जहां इसे बूट करना भी आवश्यक था। IMHO यह OSX में इस्तेमाल किया जाने वाला सम्मेलन है जो समस्या का कारण बनता है।
जैकी

4
मेरी मशीन पर कई JDK सही ढंग से स्थापित हैं यह Oracles की वरीयता प्लगइन है जो 1.8 से 1.7 तक स्विच की अनुमति नहीं देता है, कमांड लाइन से एक पूर्ण पथ के साथ वे सभी सफलतापूर्वक काम करते हैं। / usr / libexec / java_home -V उन सभी को सूचीबद्ध करता है - और Java 7 वरीयता फलक ने Java 7
JRE

0

मैं @ nkadwa के उत्तर को पूरक करना चाहता हूं। उनके सुझाव ने काम किया, लेकिन केवल करंटएसडीके के लिए सहानुभूति बदलने के बाद भी। तो यहाँ संशोधित कोड है:

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.