जावा macOS के नवीनतम संस्करणों पर एक वैकल्पिक पैकेज है।
फिर भी एक बार स्थापित होने के बाद ऐसा प्रतीत होता है कि JAVA_HOME पर्यावरण चर ठीक से सेट नहीं है ।
जावा macOS के नवीनतम संस्करणों पर एक वैकल्पिक पैकेज है।
फिर भी एक बार स्थापित होने के बाद ऐसा प्रतीत होता है कि JAVA_HOME पर्यावरण चर ठीक से सेट नहीं है ।
जवाबों:
साथ जावा वैकल्पिक पैकेज या ओरेकल JDK स्थापित है, आपके लिए निम्न पंक्तियों में से एक को जोड़ने ~ / .bash_profile फ़ाइल वातावरण चर तदनुसार सेट हो जाएगा।
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
अपडेट: जोड़ा -v झंडा Jilles वैन Gurp प्रतिक्रिया पर आधारित है ।
/usr/libexec/java_home
एक निर्देशिका नहीं बल्कि एक निष्पादन योग्य है। यह वर्तमान में कॉन्फ़िगर किया गया JAVA_HOME आउटपुट करता है और वास्तव में इसे परिवर्तित नहीं करता है। यही जावा वरीयताएँ अनुप्रयोग है, जो मेरे मामले में टूटा हुआ लगता है और वास्तव में जेवीएम को सही ढंग से नहीं बदलता है। यह 1.7 JVM को सूचीबद्ध करता है, लेकिन मैं वास्तव में के उत्पादन को बदलने के बिना सभी को टॉगल / अनगलॉग और ड्रैग और ड्रॉप कर सकता हूं /usr/libexec/java_home
।
शेर पर Oracle से 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 तक अपडेट करना ठीक है।
मेरे लिए, माउंटेन लायन 10.8.2, सबसे अधिक मत वाला समाधान काम नहीं करता है। मैं Oracle के माध्यम से jdk 1.7 स्थापित किया और होमब्रे से मैवेन किया।
मेरा समाधान हडूप की हैडऑफ -एनवी.श फ़ाइल से है जिसे मैंने होमब्रे से भी स्थापित किया है। मैं नीचे वाक्य ~ / .bash_profile में जोड़ता हूं, और यह काम करता है।
export JAVA_HOME="$(/usr/libexec/java_home)"
यह समाधान ओरेकल से स्थापित जावा 1.8 के साथ ओएस एक्स योसेमाइट के लिए भी काम करता है।
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
उपरोक्त उत्तर में से किसी ने भी मेरी मदद नहीं की। मुझे लगता है कि सभी उत्तर पुराने के लिए हैंOS X
OS X Yosemite 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
फ़ाइल की सामग्री को अपडेट कर रहे हैं ।
जावा 9 और कुछ साफ उपनामों के लिए अपडेट करें।
इन .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
ध्यान दें, कि नवीनतम संस्करण के लिए यह है 9
और नहीं 1.9
।
सक्रिय जावा सेट करें:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
विभिन्न संस्करणों के बीच स्विच करने के लिए कुछ अतिरिक्त उपनाम:
alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'
टर्मिनल में परीक्षण:
% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
EDIT: जावा 10 के लिए अपडेट
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDIT: जावा 11 के लिए अपडेट
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
ऊपर अमेज़न के EC2 टूल के साथ काम नहीं किया, क्योंकि यह उम्मीद करता है कि bin/java
नीचे आदि JAVA_HOME
। /System/Library/Frameworks/JavaVM.framework/Home
काम किया।
Mac OS X Lion पर, चलाने के लिए Visualgc सेट करने के लिए, मैंने उपयोग किया:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? कमांड / usr / libexec / java_home रिटर्न / सिस्टम / सीमाएं / Java /JavaVirtualMachines/1.6.0.jdk/Contents/Home
निम्नलिखित ने मेरे लिए काम किया। मैं जावा 8 स्थापित के साथ OSX Yosemite पर ZSH का उपयोग कर रहा हूं।
निम्न आदेश /usr/libexec/java_home
JDK घर के लिए रास्ता निकालता है:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
अपने में ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
एक बेहतर (अधिक अपग्रेड करने योग्य) तरीका निम्नलिखित का उपयोग करना है:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
यह AWS के साथ भी काम करना चाहिए क्योंकि यह bin
होम के नीचे है
1.7.0_21-b12 जैसे नए ओरेकल जेवीएम यहां स्थापित होने लगते हैं:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
उपकरण इन जावा संस्करणों के लिए एक त्रुटि देता है।
MacOS Mojave के लिए 10.14.1 और जावा 11.0.1 के रूप में मैंने प्रोफाइल सेट किया
export JAVA_HOME=$(/usr/libexec/java_home)
इसकी पुष्टि करने के लिए टर्मिनल में कुंजी:
$JAVA_HOME/bin/java -version
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)
मेरा दृष्टिकोण है:
.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
इससे J6 और J7 के बीच स्विच करना बहुत आसान हो जाता है
मुझे स्पष्ट रूप से इसे अपने मैकबुक एयर पर सटीक पथ पर सेट करना था।
इसके बाद के चरण:
echo $JAVA_HOME
(यदि यह सेट है तो यह रास्ता दिखाएगा), यदि नहीं, तो इसका उपयोग करके खोजने का प्रयास करेंsudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
मैं जावेद 8 के साथ मैकबुक एयर पर MACOS MOJAVE - 10.14.2 (18C54) चला रहा हूं
Mac OS X 10.9 के लिए मैंने Oracle से JRE का नवीनतम संस्करण स्थापित किया और फिर JAVA_HOME को /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk.Contents/Home पर रीसेट करें।
मुझे यकीन है कि एक बेहतर तरीका है लेकिन मुझे उठकर दौड़ना है।
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX Yosemite, ZSH, और Java SE रनटाइम एनवायरनमेंट 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"
मेरे मैक ओएस को अपग्रेड करने और मेरे लिए काम करने के बाद भी यही मुद्दा मिला:
cmd> vi ~ / .bash_profile
जोड़ें
cmd> स्रोत ~ / .bash_profile या एक नया टर्मिनल खोलें
मुझे लगता है कि jdk संस्करण भिन्न हो सकता है, इसलिए बस उस संस्करण का उपयोग करें जो आपके पास है / लाइब्रेरी / जावा / JavaVirtualMachines /
यदि आपको मैक ओएस एक्स (योसेमाइट) के तहत जेडीके के कई संस्करणों की आवश्यकता है, तो उनके बीच स्वचालित स्विचिंग के लिए कुछ स्क्रिप्टिंग जोड़ने में मदद मिल सकती है।
आप क्या करते हैं अपने ~ / .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
क्या स्क्रिप्ट करता है में पहली निकालें अन्य JDK संस्करण के लिए है पथ इतना है कि वे हमारे नए JDK संस्करण के साथ हस्तक्षेप नहीं करेगा। फिर यह / usr / libexec / java_home का कुछ चतुर उपयोग करता है जो एक कमांड है जो JDK संस्करणों को स्थापित करता है। -V तर्क कहता है JAVA_HOME , आपूर्ति की संस्करण के साथ JDK की राह पर लौटने के लिए उदाहरण के लिए 1.7। हम नए पाए गए JAVA_HOME निर्देशिका की बिन निर्देशिका को इंगित करने के लिए PATH को भी अपडेट करते हैं । अंत में हम केवल फ़ंक्शन का उपयोग करके निष्पादित कर सकते हैं
setjdk 1.7
जो 1.7 शाखा के नवीनतम स्थापित JDK संस्करण का चयन करता है। एक विशिष्ट संस्करण का चयन करने के लिए आप बस निष्पादित कर सकते हैं
setjdk 1.7.0_51
बजाय। रन / usr / libexec / java_home -V कैसे संस्करणों का चयन करने के बारे में अधिक जानकारी प्राप्त करने के लिए।
PS आप इसे सहेजने के बाद स्रोत ~ / .bash_profile के लिए मत भूलना ।
यह उत्तर माउंटेन लायन से संबंधित है न कि लायन से। मुझे AWS कमांड लाइन टूल्स के लिए ऐसा करने की आवश्यकता थी। एडब्ल्यूएस डॉक्स के अनुसार , रनिंग which java
रिटर्न/usr/bin/java
।
तो, मैं JAVA_HOME=/usr
अपने में सेट.bashrc
।
जाहिर है, /usr/bin/java
एक प्रतीकात्मक लिंक है /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
जो इसे सभी काम करता है।
अपडेट करें
जैसा कि नीचे टिप्पणी में उल्लेख किया गया है, यह JAVA_HOME
मान एक आदर्श समाधान नहीं है जब JAVA_HOME
पर्यावरण चर का उपयोग एडब्ल्यूएस कमांड लाइन टूल्स के अलावा अन्य चीजों द्वारा किया जाना है। यह एडब्ल्यूएस कमांड लाइन टूल्स के लिए ठीक काम करता है, हालांकि, जैसा कि उनके डॉक्स में दिया गया है।
मैक योसेमाइट के लिए,
JDK 1.7.0_xx उपयोग कर रहा है
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
बस netbeans.conf
फ़ाइल में 1.8 jdk संस्करण का java_home सेट करें :
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
असहज रेखा:
netbeans_jdkhome="path/to/jdk"
और मेरे मामले में, अपने 1.8 jdk के लिए रास्ता तय करें:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
यह दृष्टिकोण आपको मैक ओएस पर कई jdk संस्करणों के लिए देता है
मैक पर मछली टर्मिनल उपयोगकर्ताओं के लिए (मेरा मानना है कि यह लिनक्स पर भी उपलब्ध है), यह काम करना चाहिए:
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
मैक उपयोगकर्ता के लिए। जावा 8 को जोड़ना चाहिए
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
जावा ६:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home