मुझे MacOS X 10.6 पर JAVA_HOME पर्यावरण चर क्या सेट करना चाहिए?


436

कई जावा अनुप्रयोग जो अपने वातावरण को कॉन्फ़िगर करने के लिए शेल स्क्रिप्ट का उपयोग करते हैं JAVA_HOME हैं, जावा के सही संस्करण को शुरू करने के पर्यावरण चर का हैं, JRE JAR का पता लगाते हैं, और इसी तरह।

MacOS X 10.6 में, निम्नलिखित चर इस चर के लिए मान्य प्रतीत होते हैं

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

इनमें से कुछ वास्तविक वर्तमान वीएम के अनुसार हैं (जैसा कि जावा वरीयता फलक में परिभाषित किया गया है)।

लेकिन इनमें से किसे इस्तेमाल किया जाना चाहिए - या उनमें से किसी का उपयोग करना ठीक है?


जवाबों:


849

मैं बस JAVA_HOMEउस कमांड के आउटपुट पर सेट करता हूं , जो आपको आपके जावा वरीयताओं में निर्दिष्ट जावा पथ देना चाहिए। यहाँ मेरी .bashrcफ़ाइल से एक स्निपेट है , जो इस चर को सेट करता है:

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

मुझे उस तकनीक से कोई समस्या नहीं हुई है।

कभी-कभी मुझे JAVA_HOMEजावा के पुराने संस्करण के मूल्य को बदलना पड़ता है । उदाहरण के लिए, मेरे द्वारा बनाए जा रहे एक प्रोग्राम को OS X पर 32-बिट जावा 5 की आवश्यकता होती है, इसलिए उस प्रोग्राम का उपयोग करते समय, मैं JAVA_HOMEरन करके सेट करता हूं :

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

उन लोगों के लिए जो java_homeआपके रास्ते में नहीं हैं , इसे इस तरह से जोड़ें।

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home

संदर्भ :


20
माउंटेन लायन के पास यह भी है
sghill

57
मैवरिक्स के लिए अभी भी मान्य है
पास्कल

42
अभी भी योसेमाइट के लिए मान्य है। ;)
ज्योफ्री वाइसमैन

42
एल कैपिटान। चेक!
gattshjoty 10

11
अभी भी Mojave के लिए मान्य है
Keuha

40

इसके अलावा, यह JDK को प्रतिबिंबित करने के लिए अपने पथ सेट करने के लिए दिलचस्प है। JAVA_HOME जोड़ने के बाद (जो 'मिपदी' द्वारा उद्धृत उदाहरण के साथ किया जा सकता है):

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

~ / .Profile में भी जोड़ें:

export PATH=${JAVA_HOME}/bin:$PATH

पुनश्च: OSX के लिए, मैं आमतौर पर .bashrc के बजाय गृह dir में .profile का उपयोग करता हूं


डिफ़ॉल्ट bash चलाने वाले OSX के लिए, मैं आमतौर पर बैश का उपयोग करता हूं .bash_profile- आप जेनेरिक की तुलना में क्यों उपयोग करते हैं .profile?
लीजी जूल

1
चूंकि .profileयह सामान्य है, यह साथ काम करेगा shया bash, जबकि .bash_profileयह अनन्य है bash। इसके अलावा यह उन ऐप्स से सेटिंग को अलग करता है जो उपयोग करते हैं .bash_profile, जैसे MacPorts। लेकिन आप दोनों में से किसी का भी सुरक्षित उपयोग कर सकते हैं। इसके बारे में और अधिक यहाँ
lucasarruda

1
- FYI करें, आपके द्वारा दिया गया लिंक मेरे संदेह की पुष्टि करता है कि बैश के तहत (यानी डिफ़ॉल्ट रूप से), .bash_profileओवरराइड का उपयोग .profile
लीजी जूल

@LeeGee हाँ, और यह ऐसा इसलिए करता है क्योंकि .bash_profileविशिष्ट है, जबकि .profileसामान्य है, सभी shविविधताओं के लिए।
लुकासुरूदा

1
चूँकि OS / X javaआपके लिंक को /usr/binजोड़ता $JAVA_HOMEहै, इसलिए आपके रास्ते में स्पष्ट रूप से जोड़ने की आवश्यकता नहीं होनी चाहिए ।
ज़ैक

20

मैं मैक ओएस एक्स (सिएरा) 10.12.2 कर रहा हूं

मैंने JAVA_HOME को निम्न चरणों का पालन करके React Native (Android ऐप्स के लिए) पर काम करने के लिए सेट किया है।

  • टर्मिनल खोलें (कमांड + आर, टाइप टर्मिनल, हिट एंटर)।

  • निम्नलिखित पंक्तियों को ~ / .bash_profile में जोड़ें export JAVA_HOME=$(/usr/libexec/java_home)

  • अब निम्नलिखित कमांड चलाएँ। source ~/.bash_profile

  • आप निम्न आदेश लिखकर JAVA_HOME का सटीक मान देख सकते हैं । echo $JAVA_HOME

लौटाया गया मान (आउटपुट) नीचे जैसा कुछ होगा। /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

बस।


यह सहायक है, धन्यवाद। लेकिन मुझे विश्वास है कि आप अंतिम चरण सहित चूक गए थे, जो तब JAVA_HOME को लौटाए गए मान में .bashrc / / .bash_profile / .zshrc / etc सेट कर रहा है, कृपया मुझे सही कर दें यदि मुझसे गलती हुई है
theProletariat

2
इसकी आवश्यकता नहीं है। मेरे मामले में, सिस्टम द्वारा $JAVA_HOMEसंदर्भित $(/usr/libexec/java_home)और $(/usr/libexec/java_home) आंतरिक रूप /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Homeसे संदर्भित है ।
hygull

1
समझ गया। मेरे मामले में इसकी आवश्यकता थी। धन्यवाद।
theProletariat

13

मैं मैक ओएस 10.6.8 पर हूं

मेरे लिए सबसे आसान समाधान काम करता है

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

यह जांचने के लिए कि यह काम करता है या नहीं

$ echo $JAVA_HOME

यह दिखाता है

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

आप भी परीक्षण कर सकते हैं

$ which java


9

मैं उपयोग करते हैं /Library/Java/Home। प्राथमिकताएं जिस तरह से काम करती हैं, वह आपके पसंदीदा संस्करण के साथ अद्यतित होनी चाहिए।


/ बिन। और जांचें कि यह / लाइब्रेरी / जावा को इंगित करता है और न कि / सिस्टम / लाइब्रेरी / को .. जैसा कि पुराना हो सकता है।
JRun

1
यह अब सटीक नहीं है। OS X 10.5 और बाद में, पथ खोजने के लिए / usr / libexec / java_home का उपयोग करें।
क्रिस्टोफर जॉनसन

8

यह उपरोक्त किसी भी तरह के कार्यों के लिए ग्राफिक अनुप्रयोगों के लिए काम नहीं करता है! जैसे ग्रहण, या कुछ भी स्पॉटलाइट के साथ शुरू हुआ। (.bash_profile, launchd.conf केवल टर्मिनल सत्रों के लिए काम करता है।) ग्रहण शुरू करने से पहले, बस एक टर्मिनल विंडो खोलें, और निम्न कमांड दें:

launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(आपके इंस्टॉलेशन पथ के साथ! शायद पूर्ण अवधि के बजाय $ (/ usr / libexec / java_home) के साथ काम करता है।)

यहां स्थायी समाधान के बारे में संपूर्ण उत्कृष्ट लेख देखें: लॉन्च के माध्यम से पर्यावरण चर सेट करना। OS X Yosemite / El Capitan / macOS Sierra में अब काम नहीं करता है?


2

मैंने यह स्टैक पाया है मदद करने के लिए , मैं एक ही मुद्दा रहा था और मैं ठीक कर सकता था:

मेरा जावा पथ यहाँ था:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

और मेरे में डालने की जरूरत थी .bash_profile:

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

आशा है कि मदद


2

टर्मिनल सेटअप को छोड़ देने के बाद से आपने अनुप्रयोगों का उल्लेख किया, स्थायी सिस्टम वातावरण चर सेट किया गया (macOS सिएरा के लिए काम करता है; एल कैपिटन के लिए भी काम करना चाहिए):

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(यह JAVA_HOME को नवीनतम 1.8 JDK पर सेट करेगा। संभावना है कि आप सर्वर अपडेट जैसे कि javac 1.8.0_101, javac 1.8.0_131)
से गुजर चुके हैं, बेशक, 1.8 से 1.7 या 1.6 (वास्तव में?) को अपनी ज़रूरत और अपने सिस्टम के अनुरूप बदलें?


1

अन्य उत्तरों के रूप में, जावा होम डायरेक्टरी को खोजने का सही तरीका उपयोग करना है /usr/libexec/java_home

इसके लिए आधिकारिक दस्तावेज Apple के टेक्निकल क्यू एंड ए QA1170 में है: OS X पर महत्वपूर्ण जावा निर्देशिकाएँ : https://developer.apple.com/library/mac/qa/qa1170/_index.html


यह एक डुप्लिकेट है!
फ्रैंकलिन यू

मुझे लगता है कि आधिकारिक Apple दस्तावेज़ीकरण के लिए लिंक को शामिल करना अनावश्यक नहीं है। लेकिन अगर यह है, तो सही कार्रवाई इसे डुप्लिकेट के रूप में चिह्नित करना है, टिप्पणी नहीं करना।
क्रिस्टोफर जॉनसन

मैंने एक टिप्पणी की क्योंकि मैं एक उत्तर को डुप्लिकेट के रूप में चिह्नित नहीं कर सकता । स्टैक ओवरफ्लो केवल उपयोगकर्ता को डुप्लिकेट (दुर्भाग्य से) के रूप में एक प्रश्न चिह्नित करने की अनुमति देता है । लिंक मददगार है, लेकिन मुझे लगता है कि वर्तमान उत्तर के लिए एक टिप्पणी (या केवल लिंक के साथ इसे संपादित करें क्योंकि आपके पास पहले से ही क्षमता है) बेहतर होगा क्योंकि यह एक ही उत्तर में सभी उपयोगी जानकारी को केंद्रित करता है। मेरा मानना ​​है कि कहीं न कहीं दिशानिर्देश था कि स्टैक ओवरफ्लो एक नया लिखने पर वर्तमान उत्तरों को ठीक करना पसंद करता है।
फ्रेंकलिन यू

1

मेरे लिए मावेन .mavenrcफ़ाइल से काम करने लगता है :

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc

मुझे यकीन है कि मैंने इसे SO पर भी उठाया था, बस यह याद नहीं है कि कहां है।


1

फ़ाइल बनाएँ ~/.mavenrc

फिर इसे फ़ाइल में पेस्ट करें

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

परीक्षा

mvn -v


मुझे यह दृष्टिकोण पसंद है, क्योंकि यह मुझे .mavenrc फ़ाइल के भीतर जावा संस्करण को बहुत आसान बदलने की अनुमति देता है।
स्पिंड्ज़ी

1

निम्नलिखित आदेशों के माध्यम से, JAVA_HOME पर्यावरण चर सेट करने से पहले डिफ़ॉल्ट टर्मिनल शेल की जांच करने की सिफारिश की गई है :

$ echo $SHELL
/bin/bash

यदि आपका डिफ़ॉल्ट टर्मिनल / बिन / बैश (बैश) है, तो आपको @hygull विधि का उपयोग करना चाहिए

यदि आपका डिफ़ॉल्ट टर्मिनल / बिन / zsh (Z शैल) है, तो आपको इन पर्यावरण चर को ~ / .zshenv फ़ाइल में निम्नलिखित सामग्री के साथ सेट करना चाहिए :

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

इसी तरह, किसी भी अन्य टर्मिनल प्रकार का उल्लेख ऊपर नहीं किया गया है, आपको इसकी संबंधित टर्मिनल एनवी फ़ाइल में पर्यावरण चर सेट करना चाहिए।

यह विधि macOS Mojave संस्करण 10.14.6 में काम करती है


-1

फिश शेल उपयोगकर्ताओं के लिए, निम्न जैसे कुछ का उपयोग करें: alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.