OS X पर डिफ़ॉल्ट जावा (JDK) संस्करण कैसे सेट या बदल सकते हैं?


775

आप मैक पर जावा के डिफ़ॉल्ट संस्करण को कैसे बदल सकते हैं?


2
क्या /usr/libexec/java_homeआपको बता रहा है?
बार्ट

2
/ usr / libexec / java_home रिटर्न / सिस्टम / सीमाएँ / जावा / JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat

क्या आपको सिर्फ रिबूट करने की आवश्यकता हो सकती है क्या आपने कोशिश की है?
बार्ट

हां कंप्यूटर और टर्मिनल को फिर से शुरू किया ... कोई बदलाव नहीं।
वेंकट

3
क्या आप नीचे दिए गए @markhellewell के अत्यधिक मत वाले उत्तर को स्वीकार कर सकते हैं? यह मुझे इसे थोड़ा तेज खोजने में मदद करता, और यह सिर्फ अच्छा है। :)
तय्ये

जवाबों:


1404

पहला रन /usr/libexec/java_home -Vजो निम्नलिखित की तरह कुछ आउटपुट देगा:

Matching Java Virtual Machines (3):
1.8.0_05, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

उस संस्करण को चुनें जिसे आप डिफ़ॉल्ट होना चाहते हैं ( 1.6.0_65-b14-462तर्क के लिए) तब:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`

या आप केवल प्रमुख संस्करण को निर्दिष्ट कर सकते हैं, जैसे:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

अब जब आप दौड़ेंगे 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)

export JAVA_HOME…अपने शेल के इनिट फ़ाइल में लाइन जोड़ें ।

बैश के लिए (जैसा कि एंटोनीह ने कहा है ):

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

मछली के लिए (जैसा कि ऑर्मिन द्वारा कहा गया है)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)

2
@ MattO'Brien यह कुछ ऐसा है जो आपके द्वारा उपयोग किए जा रहे शेल पर निर्भर करता है, और आपके पास जो कॉन्फ़िगरेशन है, इसलिए मैं उसके लिए एक पूर्ण समाधान नहीं दे सकता ...
मार्केलवेल

11
उन लोगों को वास्तव में exportलाइन बैकस्टिक्स है
डेविड वेस्ट

6
इसने मेरे लिए काम नहीं किया। चलने से JAVA_HOME वी पथ ले लो और इस निर्यात JAVA_HOME की तरह निर्यात आदेश को यह जोड़ने के लिए, = "/ सिस्टम / पुस्तकालय / जावा / JavaVirtualMachines / 1.6.0.jdk / सामग्री / होम"
Oden

68
यह बाश में काम करता है - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- यह भी ध्यान दें, java_home आंशिक मैचों की अनुमति देता है ताकि आपको पूर्ण संस्करण शामिल नहीं करना पड़े क्योंकि यह नवीनतम स्थापित मिलेगा। इससे अपडेट आसान हो जाता है।
एंटोनीह

14
सुनिश्चित करें कि आप निर्यात के लिए `` नहीं ’’ का उपयोग कर रहे हैं।
बर्फानी तूफान

407

यह जवाब पता करने का एक प्रयास है: जावा संस्करण सिस्टम-वाइड (न केवल वर्तमान में चल रहे शेल में) को कैसे नियंत्रित किया जाए जब मैकड एल कैपिटान या नए (सिएरा, हाई सिएरा, मोजावे) पर विकास के उद्देश्यों के लिए जेडीके के कई संस्करण स्थापित किए जाते हैं । जहां तक ​​मैं बता सकता हूं, वर्तमान उत्तरों में से कोई भी ऐसा नहीं करता है (*)।

एक डेवलपर के रूप में, मैं कई JDK का उपयोग करता हूं, और मैं एक से दूसरे में आसानी से स्विच करना चाहता हूं। आमतौर पर मेरे पास सामान्य उपयोग के लिए नवीनतम स्थिर है, और परीक्षण के लिए अन्य। लेकिन मैं नहीं चाहता कि सिस्टम "(जब मैं अपना आईडीई शुरू करता हूं)" अभी के लिए मेरे पास नवीनतम "शुरुआती पहुंच" संस्करण का उपयोग करें। मैं सिस्टम के डिफ़ॉल्ट को नियंत्रित करना चाहता हूं, और यह नवीनतम स्थिर होना चाहिए।

निम्न दृष्टिकोण जावा 7 से 12 के साथ काम करता है (कम से कम इस लेखन के समय जल्दी पहुंच), ओरेकल JDK या OpenJDK के साथ ( अक्टूबर 2018 के मध्य के बाद निर्मित AdoptOpenJDK द्वारा निर्मित सहित )।

3 पार्टी उपकरण के बिना समाधान:

  • सभी JDKs को उनके डिफ़ॉल्ट स्थान पर, के नीचे छोड़ दें /Library/Java/JavaVirtualMachines। सिस्टम डिफ़ॉल्ट रूप से उच्चतम संस्करण चुन लेगा।
  • JDK को डिफ़ॉल्ट रूप से चुनने से रोकने के लिए, उसका नाम बदलें Contents/Info.plist के लिएInfo.plist.disabled । उस $JAVA_HOMEबिंदु पर या स्क्रिप्ट या कॉन्फ़िगरेशन में स्पष्ट रूप से संदर्भित होने पर भी JDK का उपयोग किया जा सकता है। यह केवल सिस्टम के javaकमांड द्वारा नजरअंदाज कर दिया जाएगा ।

सिस्टम लांचर उन JDK का उपयोग करेगा जिनके पास एक Info.plistफ़ाइल है।

वैकल्पिक JDK के साथ एक शेल में काम करते समय, मौजूदा उत्तर (और jenv, या कस्टम एलियास / स्क्रिप्ट /usr/libexec/java_homeआदि) के बीच अपना तरीका चुनें ।


जांच का विवरण इस सार में


(*) वर्तमान उत्तर या तो अप्रचलित हैं (अब MacOS El Capitan या Sierra के लिए मान्य नहीं हैं), या केवल एक JDK को संबोधित करते हैं, या सिस्टम-वाइड पहलू को संबोधित नहीं करते हैं। कई समझाते हैं कि कैसे बदलना है $JAVA_HOME, लेकिन यह केवल वर्तमान शेल को प्रभावित करता है और वहां से क्या लॉन्च किया जाता है। यह OS लॉन्चर से शुरू होने वाले एप्लिकेशन को प्रभावित नहीं करेगा (जब तक कि आप सही फ़ाइल और लॉगआउट / लॉगिन नहीं बदलते हैं, जो थकाऊ है)। जेनव के लिए भी, यह शांत है और सभी है, लेकिन जहां तक ​​मैं यह बता सकता हूं कि यह केवल पर्यावरण चर बदलता है, तो इसकी एक ही सीमा है।


16
यह वह उत्तर है जिसकी मैं तलाश कर रहा था, jenvन ही JAVA_HOMEसिस्टम-वाइड जावा संस्करण सेट करने में सक्षम हैं, अर्थात एक ग्रहण का उपयोग करेगा।
जियोवानी लोवेटो

3
@ रोड्रिगो हाँ, जैसा कि "जांच के विवरण" (ऊपर लिंक किया गया है) में उल्लेख किया गया है: "एक जेडीके को अधिलेखित करना अधिलेखित है /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/। जाहिरा तौर पर यह वह है जो नया वरीयताएँ फलक लॉन्च करेगा - यह एकमात्र अपवाद है जो मैंने अपने समाधान के लिए पाया है: वह बात अभी भी JDK9 (नवीनतम मैं स्थापित) का उपयोग करेगा, लेकिन कोई अन्य जावा आवेदन नहीं करता है। "
ह्यूजेस एम।

2
वर्थ नोटिंग कि जावा संस्करण / लाइब्रेरी / जावा / JavaVirtualMachines में पाए जाते हैं, और यह कि उपरोक्त उत्कृष्ट कार्य समाधान इस संदर्भ में है।
एंड्रयू कोस्टा

3
वास्तव में, यह इस प्रश्न के लिए सबसे अच्छा और सबसे कार्यात्मक समाधान है। दुर्भाग्य से ऐसा है।
एरोडायनामिका

3
इस उत्तर के लिए मैं आपको पर्याप्त धन्यवाद नहीं दे सकता। यह ओएस लॉन्चर से लॉन्च किए गए निश्चित अनुप्रयोग हैं।
कार्तिक रघुपति

247

उपरोक्त उत्तरों को जोड़ते हुए , मैंने निम्नलिखित पंक्तियों को अपने .bash_profile(या .zshrcMacOS 10.15+ के लिए) में डाल दिया है, जिससे इसे स्विच करना वास्तव में सुविधाजनक हो जाता है (जिसमें java 9 के लिए @ elektromin की टिप्पणी भी शामिल है):

alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"

डालने के बाद, निष्पादित करें $ source .bash_profile

मैं निम्नलिखित टाइप करके जावा 8 पर स्विच कर सकता हूं:

$ j8
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

5
: इस के लिए जावा 9 वाक्य रचना है alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin

3
त्वरित स्विचिंग के लिए बहुत ही सरल उपनाम।
22

उपयोग करना alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"और फिर टाइप करना j10आपको जावा के वर्तमान संस्करण में वापस स्विच करने की अनुमति देता है (मेरे मामले में जावा 10)
इंटाग्ली

मैं nvmजावा संस्करणों को स्विच करने के लिए एक समान उपकरण बनाऊंगा , लेकिन jvmपहले से ही परिचित का मतलब कुछ और है :)
एंडी

सोर्सिंग करते समय मुझे यह त्रुटि मिलती है: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11

55

/ Usr / libexec / java_home पर आधारित एक छोटी मछली का कार्य

function jhome
    set JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

यदि आप मछली का उपयोग नहीं करते हैं, तो आप कुछ ऐसा ही कर सकते हैं:

#!/bin/bash

jhome () {
  export JAVA_HOME=`/usr/libexec/java_home $@`
  echo "JAVA_HOME:" $JAVA_HOME
  echo "java -version:"
  java -version
}

फिर javas do के बीच स्विच करने के लिए:

$> jhome           #switches to latest java
$> jhome -v 1.7    #switches to java 1.7
$> jhome -v 1.6    #switches to java 1.6

रेफरी: https://gist.github.com/kenglxn/1843d552dff4d4233271


1
यह केवल विशिष्ट टर्मिनल सत्र के लिए बदलता है। क्या इसे अपडेट करने का कोई तरीका है जो इसे सिस्टम में बदल सकता है?
ENG618

1
मुझे export JAVA_HOME=(/usr/libexec/java_home $argv)आपके jhomeफ़ंक्शन की दूसरी पंक्ति के बजाय लिखना था ।
डैनियल एए पल्सेमेकर

32

यह थोड़ा मुश्किल है, लेकिन OS X 10.9 (Mavericks) पर जावा इंस्टॉल करने में वर्णित चरणों का पालन करने का प्रयास करें । असल में, आपको अपने उपनाम को अपडेट करना होगा java

क्रमशः:

JDK 1.7 को स्थापित करने के बाद, आपको sudo ln -snfलिंक को वर्तमान में बदलने के लिए करना होगा java। ऐसा करने के लिए, टर्मिनल खोलें और कमांड जारी करें:

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

ध्यान दें कि निर्देशिका jdk1.7.0_51.jdk आपके द्वारा स्थापित एसडीके संस्करण के आधार पर बदल सकती है।

अब, आपको JAVA_HOMEयह इंगित करने की आवश्यकता है कि कहां jdk_1.7.0_xx.jdkस्थापित किया गया था। फिर से टर्मिनल खोलें और टाइप करें:

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

आप अपने टर्मिनल में जावा को स्थायी रूप से रखने के लिए export JAVA_HOMEअपनी .bashrcफाइल में ऊपर की लाइन जोड़ सकते हैं


1
मैं JAVA_HOME चर कैसे सेट करूं? वहाँ एक विशेष जगह मैं इसे में सेट है?
वेंकट

मैं JAVA_HOME कहां निर्यात कर रहा हूं? और कहाँ बचाया जाएगा?
वेंकट

1
मैंने जवाब अपडेट कर दिया है। क्या आप एसडीके संस्करण जानते हैं जो आपने स्थापित किया है? फ़ोल्डर का नाम एसडीके संस्करण संख्या लेता है, इसलिए ऊपर दिए गए आदेश थोड़ा बदल सकते हैं।
ट्रेिन

मैंने नवीनतम स्थापित किया है, मुझे लगता है कि यह 51 है।
वेंकट

चर JAVA_HOMEको मौजूदा टर्मिनल सत्र पर निर्यात किया जाएगा। आप चाहें .bashrcतो इसे हमारे साथ जोड़ सकते हैं। मैं अंतिम संस्करण के लिए आदेशों को अनुकूलित करूंगा।
ट्रेनी

32

Jenv का प्रयोग एक आसान तरीका है।

1. इनस्टॉल जेनव

    curl -s get.jenv.io | दे घुमा के

2. कोन्फिग जेनव

    सीडी ~ / .जेनव / उम्मीदवार /
    mkdir जावा
    सीडी जावा
    mkdir 1.7
    mkdir 1.8

3. jdk पथ को अलग करें

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0.079/jdk/Contents/Home/bin ~ / .jenv / उम्मीदवार / जावा / 1.7।
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / उम्मीदवार / जावा / 1.8।

4. आप सभी सेट हैं

स्विच कमांड:

jenv उपयोग जावा 1.8

डिफॉल्ट सेट करें:

jenv डिफ़ॉल्ट जावा 1.7


स्वच्छ और अच्छा समाधान।
११:

"जेनव यूज़ जावा 1.8" के बजाय, मुझे "जेनव शेल 1.8" का उपयोग करना था। "शेल" जरूरत के आधार पर "वैश्विक" या "स्थानीय" भी हो सकता है।
स्टीव गेलमैन

1
jenv अच्छा है जब यह काम करता है। हालांकि इसके खिलाफ सिफारिश करेंगे, क्योंकि यह "वास्तव में" उपयोग किए गए डिफ़ॉल्ट जावा संस्करण को नहीं बदलता है, कमांड चलाकर स्पष्ट होता है "/ usr / libexec / java_home -V", केवल JAVA_HOME। यह कुछ अनुप्रयोगों के साथ अजीब समस्याएं पैदा करता है, जैसे ग्रहण।
सिमोन

इसके अलावा मेरे पैरानोइडल हिस्से में किसी भी चीज को काटने के खिलाफ लगाने का सुझाव दिया गया है। यहां तक ​​कि अगर आपको लगता है कि साइट पर भरोसा किया गया है तो कोई भी आपको गारंटी नहीं दे सकता है कि यह अन-हैकेबल है। अपने OS 'पैकेज मैनेजर का प्रयोग करें।
अलेक्सांद्रा क्रावट्स


28

JDK स्थापित करें, न केवल JRE

/usr/libexec/java_home -v 1.8

देता है

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

आगे

touch .bash_profile

open -a TextEdit.app .bash_profile

TextEdit आपको एक खाली पृष्ठ दिखाएगा जिसे आप भर सकते हैं।

डॉक्टर में जोड़ें: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

टर्मिनल में:

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

आदेश का प्रयास करें:

javac -version

उत्पादन करना चाहिए:

javac 1.8.0_111

26

tl; डॉ

लाइन जोड़ें:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

फ़ाइल के लिए

~/.bash_profile

(अपने डाउनलोड किए गए संस्करण के साथ jdk1.8.0_144.jdk बदलें)

फिर source ~/.bash_profile


22

Jenv का उपयोग करें, यह एक जावा पर्यावरण प्रबंधक की तरह है। यह उपयोग और साफ करने के लिए सुपर आसान है

Mac के लिए, निम्न चरणों का पालन करें:

brew install jenv

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

स्थापना: यदि आप bash का उपयोग कर रहे हैं तो इन चरणों का पालन करें:

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l

जेवीएम के वांछित संस्करणों को जेनव में जोड़ें:

jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

स्थापित संस्करणों की जाँच करें:

jenv versions

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

jenv global oracle64-1.6.0

यह मेरे लिए एकदम सही काम किया, धन्यवाद!
फर्नांडो गेब्रियल

मैं एक समान उपकरण का उपयोग कर रहा हूं: sdkman.io/usage - मैनुअल
अलायस

12
function setjdk() {
  if [ $# -ne 0 ]; then
    removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
    if [ -n "${JAVA_HOME+x}" ]; then
      removeFromPath $JAVA_HOME
    fi
    export JAVA_HOME=`/usr/libexec/java_home -v $@`
    export PATH=$JAVA_HOME/bin:$PATH
  fi
}

में रखते अपने ~ / .profile और इतने की तरह अपने टर्मिनल में इसका इस्तेमाल करते हैं setjdk 1.8, setjdk 1.7, setjdk 9आदि आदि ...

यदि आपके पास नहीं है removeFromPathतो यह है:

function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }


12

डिफ़ॉल्ट प्रक्रिया का उपयोग करने वाले लोगों के लिए टर्मिनल का उपयोग करते हुए चार आसान चरण .. :)

  1. echo $JAVA_HOMEआप वर्तमान जावा घर देता है। उदाहरण के लिए:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ आपको उस फ़ोल्डर में ले जाएगा जहाँ आप सामान्य रूप से jdks स्थापित करते हैं (यह आपकी मशीनों के लिए भिन्न हो सकता है)

  3. lsशो आप उपलब्ध फ़ोल्डर (सामान्य रूप से यह संस्करण संख्याओं, जैसे के लिए करना होगा: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' बदल जाएगा जावा घर ।।

8

~/.zshenvफ़ाइल में निम्न कमांड जोड़ें

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

8

macOS El Capitan या नए में उपलब्ध JDK के उच्च संस्करण का चयन करेंगे /Library/Java/JavaVirtualMachines, इसलिए डाउनग्रेड करने के लिए आप फ़ाइल Info.plistको कुछ और तरह से नाम बदल सकते हैं Info.plist.disabledताकि OS पिछले संस्करण का चयन करे।


सबसे आसान तरीका है: (धन्यवाद
सतीश श्रीनिवासन

6

Apple के आधिकारिक java_home (1) मैन पेज से :

**USAGE**

   /usr/libexec/java_home  helps  users  set a $JAVA_HOME in their login rc files, or provides a way for
   command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
   tecture  requirement.  The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
   which is useful for starting Java command-line tools from launchd plists without hardcoding the  full
   path to the Java command-line tool.

   Usage for bash-style shells:
          $ export JAVA_HOME=`/usr/libexec/java_home`

   Usage for csh-style shells:
          % setenv JAVA_HOME `/usr/libexec/java_home`

6

सबसे पहले यह पता करें कि आप पर्यावरण चर को कहाँ संग्रहीत करते हैं-

  1. Emacs
  2. bash_profile
  3. zshrc फ़ाइल

पर्यावरण चर सेट करने के लिए चरण: -

  1. JAVA से jdk डाउनलोड करें
  2. इसे डबल क्लिक करके इंस्टॉल करें
  3. अब अपनी फ़ाइल में पर्यावरण चर सेट करें

    ए। के लिए emacs.profile आप इस का उपयोग कर सकते लिंक या नीचे स्क्रीनशॉट देखें

यहां छवि विवरण दर्ज करें

ख। ZSH प्रोफ़ाइल सेटअप के लिए -

1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

2. source ~/.zshrc - Restart zshrc to reflect the changes.

3. echo $JAVA_HOME - make sure path is set up properly 
   ----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

4. java -version 

   -->  java version "1.8.0_112"  Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

सभी सेट अब आप आसानी से उन्नत या जावा संस्करण को नीचा दिखा सकते हैं।


5

JDK स्विच स्क्रिप्ट

मैंने ऊपर @Alex से उत्तर को अनुकूलित किया है और जावा 9 के लिए कोड को ठीक करने के लिए निम्नलिखित लिखा है।

$ cat ~/.jdk
#!/bin/bash

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
  echo "Switching java version $1";

  requestedVersion=$1
  oldStyleVersion=8
  # Set the version
  if [ $requestedVersion -gt $oldStyleVersion ]; then
    export JAVA_HOME=$(/usr/libexec/java_home -v $1);
  else
    export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
  fi

  echo "Setting JAVA_HOME=$JAVA_HOME"

  which java
  java -version;
}

जावा 8 पर स्विच करें

$ jdk 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

जावा 9 पर स्विच करें

$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

5

यदि फिर भी आप इसे सेट नहीं कर पा रहे हैं। इस कमांड का उपयोग करना।

निर्यात JAVA_HOME =/usr/libexec/java_home -v 1.8

तो आपको इस एक का उपयोग करना होगा।

निर्यात JAVA_HOME =$(/usr/libexec/java_home -v 1.8)

यह निश्चित रूप से काम करेगा।


4

आप इसे अपने .bash_profile में डिफ़ॉल्ट रूप से सेट किए गए संस्करण में जोड़ सकते हैं।

//Open bash profile
open ~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

// run bash profile
source ~/.bash_profile

धन्यवाद! ध्यान देने योग्य बातें, आपको `अंक शामिल करना चाहिए। और जाहिर है, आपको जो भी संस्करण की आवश्यकता हो, उसे 1.8 से बदल दें। मेरे मामले में 13.0.2
जेमी एस

3

यदि आप मछली का उपयोग कर रहे हैं और आप मैक का उपयोग कर रहे हैं और आप जेडडीके के बीच स्विच करना चाहते हैं, तो नीचे मैक पर मेरे लिए काम करता है।

@ kenglxn का जवाब मेरे काम नहीं आया और मुझे लगा कि सेंसर ने सेट नहीं किया है-जो वैश्विक है!

नीचे रखें ~ / .config / मछली / config.fish

alias j8="jhome  -v 1.8.0_162"
alias j9="jhome  -v 9.0.1"

function jhome
    set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

funcsave jhome

यह जानने के लिए कि आपने कौन सा संस्करण / लघु संस्करण स्थापित किया है, आप कर सकते हैं:

/usr/libexec/java_home -V                                                                              579ms  Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

2

यदि आपके पास कई संस्करण हैं और आप किसी विशिष्ट संस्करण का उपयोग करके कुछ चलाना चाहते हैं, तो इस उदाहरण का उपयोग करें:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar

2

@Markhellewell उत्तर के आधार पर मैंने कुछ अन्य प्रकार के कार्य किए हैं जो आपके लिए करेंगे। बस इन्हें अपने शेल स्टार्टअप फाइल में जोड़ें

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() { 
  echo "Switching java version"; 
  export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; 
  java -version; 
}

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4


2

यहां बताया गया है कि मैं इसे अपने लिनक्स (उबंटू / मिंट मेट) पर कैसे करता हूं , मुझे लगता है कि मैक ऐसा ही कर सकता है।


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

कदम:

  • [मूल - भाग]
  • हाथ से jdk ( .tgz फ़ाइल) डाउनलोड करें ।
  • एक उचित स्थान पर ठीक से अनलॉक और नाम बदलें।
    जैसे /mnt/star/program/java/jdk-1.8
  • एक नरम लिंक बनाएं, जिसे बाद में जावा संस्करण में बदल दिया जाएगा।
    जैसे ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    इस प्रकार /mnt/star/program/java/javaनरम कड़ी है।
  • JAVA_HOMEएक स्टार्ट स्क्रिप्ट में सेट करें ।
    फ़ाइल का उपयोग कर सकते हैं /etc/profile.d/eric.sh, या बस उपयोग करें ~/.bashrc
    जैसेJAVA_HOME=/mnt/star/program/java/java
  • फिर एक नया बैश खोल खोलें। java -versionजावा संस्करण मुद्रित करना चाहिए।
  • [अधिक संस्करण - भाग]
  • उपरोक्त चरणों के समान, जरूरत से ज्यादा जावा संस्करण डाउनलोड और इंस्टॉल करें।
    जैसे
    /mnt/star/program/java/jdk-11
  • [स्विच - भाग]
  • में ~/.bashrc, विभिन्न जावा संस्करण के लिए चर परिभाषित करते हैं।
    जैसे
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # dir of default version,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • में ~/.bashrc, जावा संस्करण स्विच करने के लिए आदेश परिभाषित करते हैं।
    जैसे
    ## switch java version,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # default java version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • टर्मिनल में, source ~/.bashrcपरिवर्तनों को प्रभावी बनाने के लिए।
  • फिर परिभाषित आदेशों का उपयोग करके स्विच कर सकता है।

कमांड - ऊपर से विन्यास

आदेश:

  • jv11
    जावा 11 पर स्विच करें
  • jv8
    जावा 8 पर स्विच करें
  • jvd
    डिफ़ॉल्ट जावा संस्करण पर स्विच करें, जिसे _E_JAVA_HOME_Dऊपर परिभाषित किया गया है।
  • jv
    जावा संस्करण दिखाएं।

उदाहरण आउटपुट:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

तंत्र

  • यह नरम लिंक को बदलकर स्विच करता है, जिसका उपयोग किया जाता है JAVA_HOME

टिप्स

  • मेरी मशीन पर जब हाथ से jdk स्थापित होता है, तो मैं मामूली संस्करण रखता हूं, फिर प्रमुख संस्करण के साथ एक नरम लिंक बनाता हूं लेकिन बिना मामूली संस्करण के।
    जैसे
    // यह वास्तविक डायर है,
    jdk1.8.0_191

    // यह एक सॉफ्ट लिंक है jdk1.8.0_191
    jdk-8

    // यह एक सॉफ्ट लिंक है jdk-8याjdk-11
    java

  • मैं कमांड उर्फ ​​को परिभाषित करता हूं ~/.bashrc, लेकिन एक अलग फ़ाइल में चर को परिभाषित करता हूं ।
    मैं ~/.eric_varचर को परिभाषित करने के लिए उपयोग कर रहा हूं , और ~/.bashrcइसे स्रोत (जैसे source $HOME/.eric_var) करेगा।


1

एक अलग तरीके से स्थापित JDK को दी गई सूची में शामिल करने का एक आसान तरीका है /usr/libexec/java_home -Vनिर्देशिका को इस प्रकार से जोड़ना:

sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk

उदाहरण के लिए, एंड्रॉइड स्टूडियो के साथ शामिल JDK को पंजीकृत करने के लिए (लेखन के समय 1.8.0_152), उपयोग करें:

sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk

अब java_homeJDK को नीचे सूचीबद्ध करेंगे Matching Java Virtual Machinesऔर आप इसे ऊपर बताए अनुसार चुन सकते हैं।


1

मैंने इसे स्थानीय टर्मिनल के लिए किया है

export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)

alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'

export JAVA_HOME=$JAVA_13_HOME

0

यह उपकरण आपके लिए काम करेगा:

http://www.guigarage.com/2013/02/change-java-version-on-mac-os/

यह एक सरल जावाऑन है जिसका उपयोग वर्तमान जावा संस्करण को परिभाषित करने के लिए किया जा सकता है। संस्करण का उपयोग उस शेल में किया जा सकता है जिसे उपकरण में एक संस्करण चुने जाने के बाद खोला जाता है।


-6

TOO EASY SOLUTION: क्या सिरदर्द है - यह एक त्वरित आसान समाधान था जो मेरे लिए काम करता था।

मैक ओएस सिएरा संस्करण 10.12.13

  1. शॉर्टकट कुंजी का उपयोग करें: CMD + SHIFT + G - "/ लाइब्रेरी /" में टाइप करें

  2. जावा फ़ोल्डर खोजें

  3. राइट क्लिक जावा फोल्डर = ट्रैश में जाएं (पासवर्ड आवश्यक)

  4. इंस्टॉल करें: जावा एसई डेवलपमेंट किट 8 jdk-8u131-macosx-x64inosg | जावास्क्रिप्ट एसडीके डाउनलोड करें

  5. सुनिश्चित करें कि नया JAVA फ़ोल्डर / LIBRARY / में दिखाई देता है
  6. ग्रहण स्थापित करें | जावा डेवलपर्स के लिए ग्रहण आईडीई स्थापित करें
  7. बूम डन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.