[java] ओएस एक्स पर डिफ़ॉल्ट जावा (जेडीके) संस्करण को कैसे सेट या परिवर्तित करें?


Answers

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

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

मेरा वर्तमान समाधान:

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

सिस्टम लॉन्चर जेडीके का उपयोग उन लोगों के बीच उच्चतम संस्करण के साथ करेगा जिनके पास Info.plist फ़ाइल है।

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

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

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

Question

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




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

#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




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

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



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:?;;") }




/ 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
}

फिर जावा के बीच स्विच करने के लिए:

$> 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




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

@ केनग्क्सन का जवाब मेरे लिए काम नहीं करता था और मुझे पता चला कि बीसीओ ने सेट नहीं किया है-जी जो वैश्विक है!

~ / .config / fish / 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



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

क्रमशः:

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

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

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

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

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

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




टी एल; डॉ

लाइन जोड़ें:

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

फ़ाइल में

~/.bashrc

स्पष्ट रूप से अपने डाउनलोड संस्करण के साथ प्रतिस्थापित करें।






Related



Tags

java java   macos macos