मैं मैक ओएसएक्स पर जावा को कैसे स्थापित कर सकता हूं जो संस्करण स्विचिंग की अनुमति देता है?


312

मैं मैक ओएसएक्स पर OpenJDK जावा स्थापित करना चाहता हूं और अन्य JDK के साथ काम करना है क्योंकि यह एक नया रिलीज है। वर्तमान में, मैंने tar.gz डाउनलोड किया और इसे अपने पथ में रखा, लेकिन इसे बनाए रखना कठिन है।

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

brew cask info java

दिखाता है:

java: 13,33: 5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/

तो मैं इसे वहां से स्थापित कर सकता हूं, लेकिन फिर क्या? क्या मैं केवल नए संस्करण के साथ फंस गया हूं?


बस पूछते हुए, क्या हम प्रश्न टैग को एक ही संस्करण तक सीमित रख सकते हैं? चूंकि वैसे भी इस तरह के संस्करण-विशिष्ट इंस्टॉलेशन स्क्रिप्ट / चरण नहीं हैं। यह एक सामान्य (गैर-संस्करण विशिष्ट) प्रश्न है और केवल जावा -11 के साथ टैग किए जाने के लिए पर्याप्त हो सकता है , क्योंकि मुझे लगता है कि यह वह जगह है जहां लोग सवाल और जवाब का सुझाव देने के लिए तलाश शुरू करेंगे।
नमन

उत्तरों में लिपियों में विशिष्ट संस्करण शामिल हैं, भले ही अन्य संस्करणों के लिए उनकी व्याख्या करना आसान हो। लेकिन, यह इस बात का भी हिस्सा है कि समुदाय के सदस्य क्या खोजते हैं, इसलिए अद्यतन और आधुनिक उत्तरों पर ध्यान आकर्षित करने और पुराने पुराने संस्करण 6 और संस्करण 8 विषयों से अंतर करने में मदद करके उन्हें जल्दी से सही उत्तर खोजने में मदद करना अच्छा है। नवीनतम स्थिर संस्करण और नवीनतम नए संस्करण के बाद मुझे लगता है कि रखने के लिए उचित टैग हैं।
जैसन मिनार्ड

मैं संभवतः कई जावा संस्करणों के प्रबंधन के लिए जेनव का उपयोग करने की सिफारिश करूंगा
परांज

जवाबों:


716

नोट: ये समाधान जावा के विभिन्न संस्करणों सहित जावा 8 और नए जावा 13, और सूचीबद्ध संस्करण प्रबंधकों द्वारा कवर किए गए किसी अन्य पिछले जावा संस्करण के लिए काम करते हैं। इसमें ओपन JDK, Oracle, IBM, Azul, Amazon Correto, Graal आदि से वैकल्पिक JDK शामिल हैं। जावा 7, जावा 8, जावा 9, जावा 10, जावा 11, जावा 12 और जावा 13 के साथ आसानी से काम करें!

आपके पास इंस्टॉलेशन करने के साथ-साथ JDK स्विचिंग को मैनेज करने के कुछ विकल्प हैं। स्थापना Homebrew, SDKMAN , Jabba या एक मैनुअल इंस्टॉल द्वारा की जा सकती है । JEnv , SDKMAN , Jabba , या मैन्युअल रूप से सेटिंग द्वारा स्विच किया जा सकता है JAVA_HOME। इन सभी का वर्णन नीचे किया गया है।


स्थापना

सबसे पहले, Homebrew, SDKMAN या tar.gz फ़ाइल की मैन्युअल स्थापना सहित जो भी विधि पसंद करते हैं उसका उपयोग करके जावा स्थापित करें। मैन्युअल इंस्टॉल के फायदे यह है कि JDK का स्थान मैक OSX के लिए एक मानकीकृत स्थान पर रखा जा सकता है।

SDKMAN के साथ इंस्टॉल करें

यह एक सरल मॉडल है जिसमें यह संस्थापन और संस्करण स्विचन दोनों को संभालता है, एक चेतावनी के साथ कि यह JDK को एक गैर-मानक निर्देशिका में स्थापित करता है।

< एसडीकेमैन के साथ "इंस्टॉल और स्विचिंग संस्करण" > नीचे देखें

Jabba का उपयोग कर स्थापित करें

यह भी एक सरल मॉडल है जिसमें इंस्टॉलेशन और वर्जन स्विचिंग दोनों को एक ही टूल द्वारा नियंत्रित किया जाता है। स्थापना एक गैर-मानक निर्देशिका के लिए बनाई गई हैं।

< नीचे "Jabba के साथ संस्करण स्थापित और स्विच करना" > देखें

OpenJDK डाउनलोड पृष्ठ से मैन्युअल रूप से स्थापित करें:

  1. डाउनलोड OpenJDK मैक OSX के लिए से http://jdk.java.net/ (उदाहरण के लिए जावा 13 )

  2. OpenJDK टार को अनारक्षित करें, और परिणामस्वरूप फ़ोल्डर (यानी jdk-13.jdk) को अपने /Library/Java/JavaVirtualMachines/फ़ोल्डर में रखें क्योंकि यह JDK इंस्टॉल का मानक और अपेक्षित स्थान है। आप वास्तविकता में कहीं भी स्थापित कर सकते हैं।

Homebrew के साथ स्थापित करें

3 अक्टूबर, 2018 से पहले होमब्रे कॉस्क में उपलब्ध जावा का संस्करण वास्तव में ओरेकल जेवीएम था। हालाँकि, अब इसे OpenJDK में अपडेट कर दिया गया है। होमब्रे को अपडेट करना सुनिश्चित करें और फिर आप इंस्टॉल के लिए उपलब्ध नवीनतम संस्करण देखेंगे।

  1. यदि आपने पहले से होमब्रेव स्थापित नहीं किया है। सुनिश्चित करें कि यह अपडेट किया गया है:

    brew update
  2. यदि आप पहले से ही नहीं है (या आप चरण # 3 के साथ पुराने जावा संस्करण नहीं देख रहे हैं), तो पीप टैप को जोड़ें:

    brew tap homebrew/cask-versions

    और AdoptOpenJDK संस्करणों के लिए, उस टैप को जोड़ें:

    brew tap adoptopenjdk/openjdk

    ये पीक अक्सर अपने जावा संस्करण बदलते हैं, और अतिरिक्त जावा संस्करणों के साथ अन्य टैप हो सकते हैं।

  3. इंस्टॉल करने योग्य संस्करणों के लिए देखें:

    brew search java   

    या AdoptOpenJDK संस्करणों के लिए:

    brew search jdk     
  4. इंस्टॉल किए जाने वाले संस्करण पर विवरण देखें:

    brew cask info java

    या AdoptOpenJDK संस्करण के लिए:

    brew cask info adoptopenjdk
  5. JDK का एक विशिष्ट संस्करण स्थापित करें java11, जैसे adoptopenjdk8, या सिर्फ javaया adoptopenjdkवर्तमान के लिए। उदाहरण के लिए:

    brew cask install java

    आप पुराने संस्करणों के लिए पूरी तरह से योग्य पथ का उपयोग कर सकते हैं:

    brew cask install homebrew/cask-versions/java11

और इन्हें /Library/Java/JavaVirtualMachines/मैक ओएसएक्स पर अपेक्षित पारंपरिक स्थान में स्थापित किया जाएगा ।

अन्य स्थापना विकल्प:

OpenJDK के कुछ अन्य स्वाद हैं:

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

ज़ुलु® OpenJDK का एक प्रमाणित निर्माण है जो जावा एसई मानक के साथ पूरी तरह से अनुरूप है। ज़ुलु 100% खुला स्रोत है और स्वतंत्र रूप से डाउनलोड करने योग्य है। अब जावा डेवलपर्स, सिस्टम एडमिनिस्ट्रेटर और एंड यूजर्स तैनाती के लचीलेपन के साथ ओपन सोर्स जावा का पूरा लाभ उठा सकते हैं और अपग्रेड टाइमिंग पर नियंत्रण कर सकते हैं।

Amazon Correto OpenJDK बिल्ड में संस्करण 8 या संस्करण 11 (अन्य संस्करण आ रहे हैं) के लिए एक इंस्टॉलेशन पैकेज का उपयोग करना आसान है, और/Library/Java/JavaVirtualMachines/मैक ओएसएक्स परमानकनिर्देशिका मेंस्थापित होता है।

Amazon Corretto ओपन जावा डेवलपमेंट किट (OpenJDK) का एक नो-कॉस्ट, मल्टीप्लायर, प्रोडक्शन-रेडी डिस्ट्रीब्यूशन है। Corretto दीर्घकालिक समर्थन के साथ आता है जिसमें प्रदर्शन संवर्द्धन और सुरक्षा सुधार शामिल होंगे। अमेज़न हजारों उत्पादन सेवाओं पर आंतरिक रूप से Corretto चलाता है और Corretto जावा एसई मानक के साथ संगत के रूप में प्रमाणित है। Corretto के साथ, आप लिनक्स, विंडोज और macOS सहित लोकप्रिय ऑपरेटिंग सिस्टम पर जावा अनुप्रयोगों को विकसित और चला सकते हैं।


मेरा JDK कहाँ है?!?!

डिफ़ॉल्ट सिस्टम स्थानों पर पहले से स्थापित जावा JDK के स्थानों को खोजने के लिए, उपयोग करें:

/usr/libexec/java_home -V

मिलान करने वाली जावा वर्चुअल मशीनें (6):
13, x86_64: "OpenJDK 13" /Library/Java/JavaVirtualMachines/openjdk-13.jdk/Contents/Hont 12, x86_64: "OpenJDK 12" / लाइब्रेरी / Java / JavaVirtualMachines / jdkkines .jdk / Contents / Home
11, x86_64: "Java SE 11" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
10.0.2, xx_64: "Java SE 10.0.2" / लाइब्रेरी / जावा / JavaVirtualMachines /jdk-10.0.2.jdk/Contents/Home
9, x86_64: "Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk-Contents/Home
1.8.0_144, x86_64: "Java SE 8" / Library /Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

तुम भी एक विशिष्ट जावा संस्करण का उपयोग कर के स्थान की रिपोर्ट कर सकते हैं -v। उदाहरण के लिए जावा 13:

/usr/libexec/java_home -v 13

/Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

स्थापित JDK का स्थान जानना भी JEnv जैसे उपकरणों का उपयोग करते समय, या SDKMAN में एक स्थानीय संस्थापन को जोड़ने, या जबा में एक सिस्टम JDK को जोड़ने के लिए उपयोगी है - और आपको यह जानना होगा कि उन्हें कहाँ खोजना है।

यदि आपको JDK को अन्य उपकरणों द्वारा स्थापित करने की आवश्यकता है, तो इन स्थानों की जाँच करें:

  • SDKMAN को स्थापित करता है ~/.sdkman/candidates/java/
  • जेबा को स्थापित करता है ~/.jabba/jdk

मैन्युअल रूप से स्विचिंग संस्करण

जावा निष्पादन योग्य एक आवरण है जो JDK को कॉन्फ़िगर करने के लिए जो भी उपयोग करेगा JAVA_HOME, आप बदल सकते हैं ताकि JDK उपयोग में हो।

उदाहरण के लिए, यदि आपने JDK 13 को स्थापित किया है या नहीं /Library/Java/JavaVirtualMachines/jdk-13.jdkतो अगर यह उच्चतम संस्करण संख्या है तो यह पहले से ही डिफ़ॉल्ट होना चाहिए, यदि आप बस सेट नहीं कर सकते हैं:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

और अब जो भी Java एक्जीक्यूटेबल रास्ते में है वह इसे देखेगा और सही JDK का उपयोग करेगा।

/usr/libexec/java_homeपहले वर्णित के रूप में उपयोगिता का उपयोग करने से आपको अलग-अलग जेडीके प्रतिष्ठानों के स्थानों की पहचान करके जावा संस्करण बदलने के लिए उपनाम बनाने या कमांड चलाने में मदद मिलती है। उदाहरण के लिए, आपके लिए शेल उपनाम बनाना .profileया आपके .bash_profileलिए बदलना JAVA_HOME:

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java12='export JAVA_HOME=$JAVA_12_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'

# default to Java 13
java13

फिर संस्करण बदलने के लिए, बस उपनाम का उपयोग करें।

java8
java -version

जावा संस्करण "1.8.0_144"

बेशक, JAVA_HOMEमैन्युअल रूप से सेटिंग भी काम करती है!


JEnv के साथ संस्करण बदलना

JEnv को उम्मीद है कि जावा JDK पहले से ही मशीन पर मौजूद है और किसी भी स्थान पर हो सकता है। आमतौर पर आप जावा JDK की स्थापना पाएंगे/Library/Java/JavaVirtualMachines/। JEnv जावा के वैश्विक संस्करण को सेट करने की अनुमति देता है, वर्तमान शेल के लिए एक, और प्रति-निर्देशिका स्थानीय संस्करण जो कुछ परियोजनाओं को दूसरों की तुलना में विभिन्न संस्करणों की आवश्यकता होने पर काम में आता है।

  1. JEnv स्थापित करें यदि आप पहले से ही नहीं है, तो साइट http://www.jenv.be/ पर निर्देश स्थापित करें या होमब्रे का उपयोग करें।

  2. किसी भी जावा संस्करण को JEnv में जोड़ें ( निर्देशिका को समायोजित करें यदि आपने इसे कहीं और रखा है ):

    jenv add /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
  3. इस आदेश का उपयोग करके अपना वैश्विक संस्करण सेट करें:

    jenv global 13

आप jenv addसमान तरीके से अन्य मौजूदा संस्करणों को भी जोड़ सकते हैं , और जो उपलब्ध हैं उन्हें सूचीबद्ध कर सकते हैं। उदाहरण के लिए जावा 8:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 
jenv versions

अधिक आदेशों के लिए JEnv डॉक्स देखें । अब आप किसी भी जावा संस्करण (Oracle, OpenJDK, अन्य) के बीच किसी भी समय या तो पूरे सिस्टम के लिए, शेल या स्थानीय निर्देशिका के लिए स्विच कर सकते हैं।

JAVA_HOMEJEnv का उपयोग करते समय प्रबंधित करने में सहायता के लिए आप अपने लिए ऐसा करने के लिए निर्यात प्लगइन जोड़ सकते हैं ।

$ jenv enable-plugin export
  You may restart your session to activate jenv export plugin echo export plugin activated

निर्यात प्लगइन समायोजित नहीं हो सकता है JAVA_HOMEयदि यह पहले से ही सेट है, तो आपको अपने प्रोफ़ाइल में इस चर को साफ़ करने की आवश्यकता हो सकती है ताकि इसे JEnv द्वारा प्रबंधित किया जा सके।

आप jenv exec <command> <parms...>एकल कमांड चलाने के लिए JAVA_HOMEऔर PATHउस एक कमांड के लिए सही तरीके से सेट करने के लिए उपयोग कर सकते हैं , जिसमें एक और शेल खोलना शामिल हो सकता है।


SDKMAN के साथ संस्करण स्थापित करना और बदलना

SDKMAN थोड़ा अलग है और इंस्टॉल और स्विचिंग दोनों को संभालता है। SDKMAN भी स्थापित JDK को अपनी निर्देशिका ट्री में रखता है, जो आमतौर पर है~/.sdkman/candidates/java। SDKMAN वैश्विक डिफ़ॉल्ट संस्करण और वर्तमान शेल के लिए विशिष्ट संस्करण सेट करने की अनुमति देता है।

  1. Https://sdkman.io/install से SDKMAN स्थापित करें

  2. यह सुनिश्चित करने के लिए उपलब्ध जावा संस्करणों की सूची बनाएं कि आपको संस्करण आईडी पता है

    sdk list java
  3. उन संस्करणों में से एक को स्थापित करें, उदाहरण के लिए, जावा 13:

    sdk install java 13.0.0-open 
  4. 13 को डिफ़ॉल्ट संस्करण बनाएं:

    sdk default java 13.0.0-open

    या सत्र के लिए 13 पर स्विच करें:

    sdk use java 13.0.0-open

जब आप सूची कमांड का उपयोग करके इंस्टॉलेशन के लिए उपलब्ध संस्करणों को सूचीबद्ध करते हैं, तो आपको जावा के विभिन्न प्रकार के वितरण दिखाई देंगे:

sdk list java

और अतिरिक्त संस्करण स्थापित करें, जैसे कि JDK 8:

sdk install java 8.0.181-oracle

SDKMAN पहले से स्थापित मौजूदा संस्करणों के साथ काम कर सकता है। बस अपने स्वयं के संस्करण लेबल और JDK का स्थान देते हुए एक स्थानीय इंस्टॉल करें:

sdk install java my-local-13 /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

और इसे स्वतंत्र रूप से उपयोग करें:

sdk use java my-local-13

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

जैसे ही आप संस्करण बदलते हैं SDKMAN आपके PATHऔर आपके JAVA_HOMEलिए स्वचालित रूप से प्रबंधन करेगा ।


Jabba के साथ संस्करण स्थापित करना और बदलना

Jabba इनस्टॉल और स्विचिंग दोनों को संभालती है। Jabba स्थापित JDK को अपनी निर्देशिका ट्री में भी रखता है, जो कि आम तौर पर होता है~/.jabba/jdk

  1. होम पेज पर दिए गए निर्देशों का पालन ​​करते हुए Jabba स्थापित करें ।

  2. उपलब्ध सूची JDK की

    jabba ls-remote
  3. जावा JDK 12 स्थापित करें

    jabba install openjdk@1.12.0
  4. इसका इस्तेमाल करें:

    jabba use openjdk@1.12.0

आप अन्य नामों को भी उपनाम कर सकते हैं, मौजूदा JDK के पहले से स्थापित लिंक से, और दिलचस्प JDK जैसे कि GraalVM, Adopt JDK, IBM JDK, और बहुत कुछ का मिश्रण पा सकते हैं। पूरा उपयोग गाइड होम पेज पर भी उपलब्ध है।

जब आप संस्करण बदलते हैं तो जब्बा स्वचालित रूप से आपके लिए PATHऔर आपके JAVA_HOMEलिए प्रबंधन करेगी ।


2
मैनुअल इंस्टॉल के लिए मुझे लगता है कि आपको JAVA_HOMEएक विशिष्ट संस्करण का चयन करने के लिए सेट करने की आवश्यकता है , कुछ इस तरह export JAVA_HOME=$(/usr/libexec/java_home -v <version>)से.bash_profile
पीटर हुल

@PeterHull कुछ जावा संस्करण प्रबंधकों को JAVA_HOMEमैन्युअल रूप से सेट होने के लिए पसंद नहीं है और वे इसे स्वयं प्रबंधित करते हैं। जेएनएन निश्चित रूप से इसे समायोजित नहीं करेगा यदि पहले सेट किया गया था, जोबा और एसडीकेमैन के बारे में निश्चित नहीं है, लेकिन वे सामान्य रूप से उस सेटिंग का प्रबंधन करेंगे। केवल NO संस्करण स्विचिंग के साथ एक मैनुअल इंस्टॉल को कभी भी इस मान को सीधे सेट करना चाहिए।
जैसन मिनार्ड

काफी सहमत हैं, यह अच्छा होगा यदि आप ध्यान दें कि आपके उत्तर में संस्करण स्विचिंग और सेटिंग के लिए पूछे गए मूल प्रश्न के रूप में JAVA_HOME है (केवल?) मैन्युअल इंस्टाल विधि के लिए ऐसा करने का तरीका।
पीटर हुल

2
जावा काढ़ा पीपा में बदलकर OpenJDK 11 कल, अक्टूबर 3, 2018 को बदल गया।
जिंगांग हुआंग

16
संभवतः कई अलग-अलग तरीकों को कवर करते हुए MacOS पर अलग-अलग JDK को चलाने के लिए सबसे व्यापक और उपयोगी उत्तर, कुछ मैं पहले कभी नहीं आया था।
केविन हूक

7

मैंने इस तरह से इसे किया।

चरण 1: जावा 11 स्थापित करें

आप यहाँ से मैक के लिए Java 11 dmg डाउनलोड कर सकते हैं: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

चरण 2: जावा 11 की स्थापना के बाद। सभी संस्करणों की स्थापना की पुष्टि करें। अपने टर्मिनल में निम्न कमांड टाइप करें।

/usr/libexec/java_home -V

चरण 3: संपादित करें .bash_profile

sudo nano ~/.bash_profile

चरण 4: डिफ़ॉल्ट के रूप में 11.0.1 जोड़ें। (नीचे पंक्ति bash_profile फ़ाइल में जोड़ें)।

export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.1)

किसी भी संस्करण पर स्विच करने के लिए

export JAVA_HOME=$(/usr/libexec/java_home -v X.X.X)

अब बैश से बाहर निकलने के लिए CTRL + X दबाएं। परिवर्तनों को सहेजने के लिए 'Y' दबाएँ।

चरण 5: पुनः लोड करें bash_profile

source ~/.bash_profile

चरण 6: जावा के वर्तमान संस्करण की पुष्टि करें

java -version

अच्छा समाधान है। लेकिन क्या होगा अगर अभी भी java -version 8 को इंगित किया गया है जबकि मैंने JAVA_HOME 11 निर्यात किया है?
एलेक्सगेरे

1
प्रश्न ओपन JDK के बारे में पूछ रहा है, लेकिन आप इसके बजाय Oracle JDK से जुड़े हैं। ओपन JDK में इंस्टॉलर या इंस्टॉलेशन निर्देश नहीं हैं।
Splaktar

1
@AlexGera के जवाब में - इस पंक्ति को जोड़ें: $ PATH = $ JAVA_HOME / बिन: $ PATH
फवाद एफेंडी

6

3rd पार्टी टूल्स के बिना सिस्टम-डिफ़ॉल्ट संस्करण को मैन्युअल रूप से स्विच करना:

जैसा कि इस पुराने उत्तर में विस्तृत है , macOS /usr/bin/javaपर एक रैपर उपकरण है जो जावा संस्करण द्वारा इंगित किया गया है JAVA_HOMEया यदि वह चर सेट नहीं है, तो जावा इंस्टालेशन के तहत दिखेगा /Library/Java/JavaVirtualMachines/और उच्चतम संस्करण के साथ एक का उपयोग करेगा। यह Contents/Info.plistप्रत्येक पैकेज के तहत देखकर संस्करण निर्धारित करता है ।

इस ज्ञान के साथ सशस्त्र आप कर सकते हैं:

  • यह नियंत्रित करें कि सिस्टम किस संस्करण में उन Info.plistसंस्करणों का नाम बदलकर उपयोग करेगा जिन्हें आप डिफ़ॉल्ट के रूप में उपयोग नहीं करना चाहते हैं (वह फ़ाइल वास्तविक जावा रनटाइम द्वारा उपयोग नहीं की जाती है)।
  • सेटिंग द्वारा विशिष्ट कार्यों के लिए उपयोग करने के लिए कौन सा नियंत्रण है $JAVA_HOME

मैंने अभी सत्यापित किया है कि यह अभी भी OpenJDK और Mojave के साथ सही है।

एक नए सिस्टम पर, कोई जावा संस्करण स्थापित नहीं है:

$ java -version
No Java runtime present, requesting install.

इसे रद्द करें, OpenJDK 11 & 12ea को https://jdk.java.net पर डाउनलोड करें ; OpenJDK11 स्थापित करें:

$ cd /Library/Java/JavaVirtualMachines/
$ sudo tar xzf ~/Downloads/openjdk-11.0.1_osx-x64_bin.tar.gz

सिस्टम जावा अब 11 है:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

OpenJDK12 स्थापित करें (इस समय प्रारंभिक पहुंच):

$ sudo tar xzf ~/Downloads/openjdk-12-ea+17_osx-x64_bin.tar.gz 

सिस्टम जावा अब 12 है:

$ java -version
openjdk version "12-ea" 2019-03-19
[...]

अब आइए "Hide" OpenJDK 12 को सिस्टम जावा रैपर से:

$ cd jdk-12.jdk/Contents/
$ sudo mv Info.plist Info.plist.disabled

सिस्टम जावा वापस 11 पर है:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

और आप मैन्युअल रूप से सेटिंग द्वारा अभी भी 12 संस्करण का उपयोग कर सकते हैं JAVA_HOME:

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ java -version
openjdk version "12-ea" 2019-03-19
[...]


6

यदि आपके मशीन पर कई संस्करण स्थापित हैं, तो निम्नलिखित को bash प्रोफाइल में जोड़ें:

निर्यात JAVA_HOME_7 = $ (/ usr / libexec / java_home -v1.7)

निर्यात JAVA_HOME_8 = $ (/ usr / libexec / java_home -v1.8)

निर्यात JAVA_HOME_9 = $ (/ usr / libexec / java_home -v9)

और निम्नलिखित उपनाम जोड़ें:

उपनाम java7 = 'निर्यात JAVA_HOME = $ JAVA_HOME_7'

उपनाम java8 = 'निर्यात JAVA_HOME = $ JAVA_HOME_8'

उपनाम java9 = 'निर्यात JAVA_HOME = $ JAVA_HOME_9'

और उपनाम का उपयोग करके आवश्यक संस्करण पर स्विच कर सकते हैं:

टर्मिनल में:

~ >> java7 export JAVA_HOME=$JAVA_7_HOME


हाँ, यह यहाँ एक और जवाब में कवर किया गया था।
जैसन मिनार्ड

3

एक और विकल्प SDKMAN का उपयोग कर रहा है ! Https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-use-sdkman/ देखें

पहले SDKMAN स्थापित करें: https://sdkman.io/install और फिर ...

  1. Oracle JDK 8 को इसके साथ स्थापित करें: sdk install java 8.0.181-oracle
  2. OpenJDK 11 को इसके साथ स्थापित करें: sdk install java 11.0.0-open

स्विच करने के लिए:

  • JDK 8 के साथ स्विच करें sdk use java 8.0.181-oracle
  • JDK 11 के साथ स्विच करें sdk use java 11.0.0-open

डिफ़ॉल्ट सेट करने के लिए:

  • JDK 8 के साथ डिफ़ॉल्ट sdk default java 8.0.181-oracle
  • JDK 11 के साथ डिफ़ॉल्ट sdk default java 11.0.0-open

3

होमब्रे और जेनव के साथ:

अनुमान: मैक मशीन और आप पहले से ही होमब्रे स्थापित कर चुके हैं।

पीपा स्थापित करें:

$ brew tap caskroom/cask
$ brew tap caskroom/versions

नवीनतम जावा स्थापित करने के लिए:

$ brew cask install java

जावा 8 स्थापित करने के लिए:

$ brew cask install java8

जावा 9 स्थापित करने के लिए:

$ brew cask install java9

यदि आप कई संस्करण स्थापित / प्रबंधित करना चाहते हैं तो आप 'जेनव' का उपयोग कर सकते हैं:

स्थापित करें और कॉन्फ़िगर करें:

$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

स्थापित जावा को जेनव में जोड़ें:

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home

सभी स्थापित जावा को देखने के लिए:

$ jenv versions

ऊपर कमांड स्थापित जावा की सूची देगा:

* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
oracle64-1.8.0.202-ea

जावा संस्करण को कॉन्फ़िगर करें जिसे आप उपयोग करना चाहते हैं:

$ jenv global oracle64-1.6.0.39

1
Error: caskroom/cask was moved. Tap homebrew/cask-cask instead, फिरfatal: repository 'https://github.com/Homebrew/homebrew-cask-cask/' not found
चुमिएस्टबकेट

@ChumiestBucket ने कहा कि इस समाधान में कई समस्याएं हैं
javadba

1

IMHO, सभी अतिरिक्त अनुप्रयोगों / पैकेजों को स्थापित करने की कोई आवश्यकता नहीं है।

कमांड का उपयोग कर उपलब्ध संस्करणों की जाँच करें:

> /usr/libexec/java_home -V
Matching Java Virtual Machines (8):
    11, x86_64: "Java SE 11-ea" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    10.0.2, x86_64: "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_181-zulu-8.31.0.1, x86_64:    "Zulu 8"    /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
    1.8.0_151, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

अब यदि आप उपरोक्त सूची में अज़ुल JDK 8 को चुनना चाहते हैं, और Oracle के Java SE 8 को नहीं, तो नीचे दिए गए आदेश को लागू करें:

> /usr/libexec/java_home -v 1.8.0_181
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

ओरेकल के जावा एसई 8 को चुनने के लिए आप कमांड का उपयोग करेंगे:

> /usr/libexec/java_home -v 1.8.0_151
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

जैसा कि आप देख सकते हैं कि प्रदान किया गया संस्करण संख्या स्ट्रिंग्स का अनूठा सेट होगा: 1.8.0_181 बनाम 1.8.0_151


पहले उदाहरण के लिए एक संस्करण स्ट्रिंग नहीं होना चाहिए 1.8.0_181-zulu-8.31.0.1? या यह आंशिक मिलान है?
जैसन मिनार्ड

यह वास्तव में जावा के संस्करण का उपयोग करने के लिए कुछ भी नहीं बदलता है, यह बस के स्थान की रिपोर्ट करता है JAVA_HOME। इन आदेशों का उपयोग करते हुए मैनुअल स्विचिंग मेरे अन्य उत्तर में शामिल है।
जैसन मिनार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.