[java] मैकोज सिएरा (10.12), एल कैपिटन (10.11), योसमेट (10.10), मैवरिक्स (10.9), माउंटेन शेर (10.8) या ओएसएक्स शेर (10.7) पर जावा-एचओएमई कहां है?



Answers

/usr/libexec/java_home एक निर्देशिका नहीं है लेकिन एक निष्पादन योग्य है। यह वर्तमान में कॉन्फ़िगर किए गए JAVA_HOME आउटपुट करता है और वास्तव में इसे परिवर्तित नहीं करता है। जावा प्राथमिकता ऐप यही है, जो मेरे मामले में टूटा हुआ लगता है और वास्तव में JVM को सही ढंग से नहीं बदलता है। यह 1.7 जेवीएम सूचीबद्ध करता है लेकिन मैं वास्तव में /usr/libexec/java_home के आउटपुट को बदले बिना वहां इच्छित सभी को टॉगल / अनगॉगल और ड्रैग और ड्रॉप कर सकता हूं।

शेर पर ओरेकल से 1.7.0 u6 इंस्टॉल करने के बाद भी और इसे वरीयताओं में डिफ़ॉल्ट के रूप में सेट करने के बाद भी, यह अभी भी सेब 1.6 जावा घर लौटा। वास्तव में मेरे लिए काम करने वाला एकमात्र फिक्स JAVA_HOME मैन्युअल रूप से सेट कर रहा है:

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

कमांड लाइन से चलाने पर कम से कम इस तरह से यह 1.7 का उपयोग करेगा। /usr/libexec/java_home अभी भी 1.6 पर जोर देता है।

अद्यतन : ओएसएक्स पर कमांड लाइन से जावा को समझना इस काम के तरीके पर एक बेहतर स्पष्टीकरण है।

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

ऐसा करने का तरीका है। नोट, इसे 1.8 कार्यों में अपडेट करना ठीक है।

Question

जावा मैकोज़ के नवीनतम संस्करणों पर एक वैकल्पिक पैकेज है।

फिर भी एक बार स्थापित होने पर ऐसा लगता है जैसे JAVA_HOME पर्यावरण चर ठीक से सेट नहीं है




यह उत्तर माउंटेन शेर से संबंधित है और शेर नहीं। मुझे एडब्ल्यूएस कमांड लाइन टूल्स के लिए ऐसा करने की ज़रूरत थी। एडब्ल्यूएस दस्तावेज़ों के मुताबिक, which java रिटर्न /usr/bin/java चल रहा है।

इसलिए, मैंने अपने .bashrc में JAVA_HOME=/usr सेट किया है।

जाहिर है, /usr/bin/java /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java लिए एक प्रतीकात्मक लिंक है जो इसे सभी काम करता है।

अद्यतन करें

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




निम्नलिखित का उपयोग करने के लिए एक बेहतर (अधिक अपग्रेड करने योग्य) तरीका है:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

यह एडब्ल्यूएस के साथ भी काम करना चाहिए क्योंकि इसमें घर के नीचे bin है




यदि आपको मैक ओएस एक्स (योसमेट) के तहत जेडीके के कई संस्करणों की आवश्यकता है, तो उनके बीच स्वचालित स्विचिंग के लिए कुछ स्क्रिप्टिंग जोड़ने में मददगार हो सकता है।

आप क्या करते हैं अपने ~ / .bash_profile को संपादित करना और निम्न जोड़ें:

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
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

पहली बार पीएटीएच में अन्य जेडीके संस्करणों को हटाने के लिए स्क्रिप्ट क्या करती है ताकि वे हमारे नए जेडीके संस्करण में हस्तक्षेप न करें। फिर यह / usr / libexec / java_home का कुछ चालाक उपयोग करता है जो एक आदेश है जो स्थापित जेडीके संस्करण सूचीबद्ध करता है। -v तर्क java_home को जेडीके के पथ को आपूर्ति किए गए संस्करण के साथ वापस करने के लिए बताता है, उदाहरण के लिए 1.7। हम नई मिली JAVA_HOME निर्देशिका की बिन निर्देशिका को इंगित करने के लिए पैथ को भी अपडेट करते हैं। अंत में हम फ़ंक्शन का उपयोग करके बस निष्पादित कर सकते हैं

setjdk 1.7

जो 1.7 शाखा के नवीनतम स्थापित जेडीके संस्करण का चयन करता है। एक विशिष्ट संस्करण का चयन करने के लिए आप बस निष्पादित कर सकते हैं

setjdk 1.7.0_51

बजाय। संस्करणों को चुनने के तरीके के बारे में अधिक जानकारी प्राप्त करने के लिए चलाएं / usr / libexec / java_home -V

PS इसे सहेजने के बाद ~ / .bash_profile स्रोत को न भूलें।




निम्नलिखित मेरे लिए काम किया। मैं जावा 8 स्थापित के साथ ओएसएक्स योसाइट पर जेडएसएच का उपयोग कर रहा हूं।

निम्न आदेश /usr/libexec/java_home घर के पथ को उत्सर्जित करता है:

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

आपके ~/.zshrc ,

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"



मैक उपयोगकर्ता के लिए। जावा 8 जोड़ना चाहिए

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

जावा 6:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

रेफरी: http://qiita.com/seri_k/items/e978c1339ce51f13e297




ओएसएक्स योसाइट, जेडएसएच, और जावा एसई रनटाइम पर्यावरण 8, मुझे यह करना था:

$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

और ~ / .zshrc में JAVA_HOME को export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current" करने के लिए बदलें




ओएस एक्स के लिए आप कर सकते हैं:

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`



मेरा दृष्टिकोण है:

.bashrc

export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME

# -- optional
# export PATH=$JAVA_HOME/bin:$PATH

यह जे 6 और जे 7 के बीच स्विच करना बहुत आसान बनाता है




उपर्युक्त उत्तरों में से कोई भी मेरी मदद नहीं करता है। मुझे लगता है कि सभी उत्तरों पुराने OS X

ओएस एक्स योसाइट 10.10 के लिए, इन चरणों का पालन करें

खोलने के लिए अपने पसंदीदा टेक्स्ट एडिटर का प्रयोग करें: ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

फ़ाइल में निम्न पंक्ति जोड़ें और इसे सहेजें (: vim के लिए "x" के बाद):

export JAVA_HOME=$(/usr/libexec/java_home)

फिर टर्मिनल में आउटपुट देखने के लिए निम्न दो आदेश टाइप करें:

$ source ~/.bash_profile

$ echo $JAVA_HOME

दूसरी पंक्ति में, आप .bash_profile फ़ाइल की सामग्री अपडेट कर रहे हैं।






Related



Tags

java java   macos macos