मैक ओएस एक्स पर स्थापित जावा 7 लेकिन टर्मिनल अभी भी संस्करण 6 का उपयोग कर रहा है


391

मैंने JDK 7u7 को oracle की वेबसाइट से डाउनलोड किया है। लेकिन स्थापना के बाद, टर्मिनल अभी भी जावा संस्करण 6 दिखा रहा है

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

किसी भी विचार क्यों जावा 7 नहीं दिखा रहा है?

उत्तर: ठीक है, समस्या हल हो गई है। यहाँ उत्तर है: मैंने पाया कि मेरे टर्मिनल में एक .bash_profile है और जावा होम वैरिएबल 1.6 पर सेट है

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

इसलिए यह वह समस्या है जिसके कारण हर बार मैंने एक नई टर्मिनल विंडो खोली है। बस इस लाइन को हटाने से समस्या हल हो जाएगी। आपको अभी भी पालन करने की आवश्यकता है जो @aleroot ने कहा था, लेकिन यदि वह आपके लिए काम नहीं करता है, तो .bash_profile (या .bashrc) सेटिंग फ़ाइल को यह देखने के लिए जांचें कि क्या आपने पहले कोई जावा संस्करण निर्यात किया है।


23
मुझे यह समस्या थी लेकिन मैंने केवल JRE को अपडेट किया और JDK को नहीं। एक बार जब मैंने JDK को अपडेट किया तो यह सही संस्करण दिखा।
पॉल मैसरट

अलग पूछने के लिए इसे माइग्रेट करें?
१२:११

14
बस @ Mazzy की टिप्पणी पर कुछ अतिरिक्त ध्यान आकर्षित करने के लिए, यह एक आसान गलती है। JRE v7 को डाउनलोड करने से संस्करण 7 दिखाई देगा जब ऑनलाइन संस्करण चेकर, या जावा नियंत्रण पैनल बात चला रहा होगा, लेकिन जब आप कमांड लाइन से जावा को आमंत्रित करेंगे तो आप अपने पहले से स्थापित JDK से पुराने संस्करण को चला रहे होंगे। तो यह सुनिश्चित करने के लिए डबल-चेक करें कि आपने जेडडीके स्थापित किया है और न केवल जेआरई।
कैम जैक्सन

1
इसे हल करने का सबसे अच्छा तरीका export JAVA_HOMEदृष्टिकोण का उपयोग करना है, जैसा कि यहां थोड़ा और अधिक लचीले तरीके से विस्तृत है
ब्रैड पार्क

5
मुझे बड़े अक्षरों में इस पर जोर देने की आवश्यकता है: इस पृष्ठ पर कई लोगों को केवल डाउनलोड करने और नवीनतम JDK की स्थापना करने की आवश्यकता होगी। जावा नियंत्रण पैनल केवल JRE को अद्यतन करता है।
वाल्टर ट्रॉस

जवाबों:


64

क्योंकि आपको जावा वरीयताएँ फलक में प्रवेश करने की आवश्यकता है और केवल जेवीएम 7 को इस तरह से चिह्नित करें:

जावा वरीयताएँ

मैक ओएस एक्स में जावा प्राथमिकताएं आसानी से और जल्दी से खोलने के लिए आप बस + के साथ स्पॉटलाइट कॉल कर सकते हैं SPACEऔर सिस्टम वरीयताएँ टाइप कर सकते हैं जो विंडो की अंतिम पंक्ति में दिखाई देगी।


3
हाँ, मिल गया। लेकिन अभी भी टर्मिनल में संस्करण 1.6, क्या मुझे रिबूट या कुछ और करने की आवश्यकता है
यांग

1
यह पैनल अब 10.8 में मौजूद नहीं है। वैकल्पिक?
पेपिज

68
@Pepijn यह पैन मैक ओएसएक्स 10.8.2 के रूप में इतिहास है और वास्तव में अब इसकी कोई आवश्यकता नहीं है। इसके बजाय आपको export JAVA_HOME=`/usr/libexec/java_home -v 1.7`Oracle से नवीनतम जावा 7 JDK पर स्विच करने के लिए उपयोग करना होगा।
उवे गुंटर 2

23
मुझे लगता है कि उन्हें किसी समय जावा वरीयता से छुटकारा मिल गया। यह मेरे बॉक्स पर स्पॉटलाइट द्वारा नहीं मिला है। 10.8.5 चल रहा है।
क्विकशिफ्टिन

1
आप JAVA_HOME की सटीक स्थिति -> सिस्टम वरीयताओं -> जावा के अंतर्गत पा सकते हैं। "जावा" टैब पर क्लिक करें। दृश्य पर क्लिक करें। पथ चर आपके JAVA_HOME (टाइल / होम) को दिखाता है।
११:०४ पर

298

Oracle का इंस्टॉलर जावा को अंदर रखता है /Library/Internet Plug-Ins/JavaAppletPlugin.plugin। और यह अधिलेखित नहीं करता है /usr/bin/java। इसलिए, यदि आप जारी करते हैं

whereis java

टर्मिनल में, यह / usr / bin / java वापस आएगा। (जो बदले में /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java, जो कि Apple का 1.6 संस्करण है)।

इसलिए, यदि आप नए जावा संस्करण का उपयोग करना चाहते हैं, तो /usr/bin/javaसिमलिंक को बदलें ताकि यह /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javaइसके बजाय इंगित करे :

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

22
यहाँ कमांड है: sudo ln -s / पुस्तकालय / इंटरनेट / प्लग-इन / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin
Binarian

11
विक्टर की कमांड काम करती है। लेकिन आपको यह भी सुनिश्चित करना होगा कि आप मौजूदा जावा सिमिलिंक को हटा देंrm /usr/bin/java
मैट फ्लोरेंस

7
जब तक ओरेकल के लोग इस प्रक्रिया में सुधार नहीं करते हैं, तब तक यहाँ एक ओएक्सएक्स
ecmanaut

61
मुझे मिलाrm: /usr/bin/java: Operation not permitted
आदित्य

37
याexport PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
मिक

114

JDK 7 को स्थापित करें और यह समस्या स्वयं हल हो जाएगी।

जावा डेवलपमेंट किट (JDK) प्राप्त करना सुनिश्चित करें, जिसमें केवल जावा रनटाइम एनवायरनमेंट (JRE) के बजाय संकलक और सामान शामिल हैं।


7
पूर्ण JDK, केवल JRE को नहीं।
ब्रेनओ 2

5
-1 यह मदद नहीं की। JDK की स्थापना न तो बदलती है /usr/bin/javaऔर न ही JAVA_HOME। लेकिन JAVA_HOMEमदद की सेटिंग ।
एंड्री नेमचेंको

3
OSX 10.9.4 पर ठीक है। यह / usr / बिन लिंक नहीं बदलता है, यह इसके नीचे सामान बदलता है। तो /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java # But: /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -version java version "1.7.0_67"
जो एत्ज़बर्गर

1
इसके अलावा JDK 1.8 के लिए काम किया - (JRE 1.8 के बजाय JDK 1.8 स्थापित करें)
मार्क चकेरियन

मैंने Java 1.8 को स्थापित करने की कोशिश की, लेकिन वह El Capitan पर काम नहीं कर पाया। 1.7 स्थापित करने से मेरी समस्याएं हल हो गईं।
एसपीआरबीआरएन

104

vi ~/.bash_profile

जोड़ना

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

इसमें /usr/bin/javaस्थापित नवीनतम जावा 7 पैकेज का उपयोग करने के लिए आपका लिंक लक्ष्य बताता है

/Library/Java/JavaVirtualMachines/

तो JDK के लिए 1.7.0_17 JAVA_HOMEहोगा:

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

नोट: हाल ही में इस क्षेत्र में मैक ओएस एक्स को एपल्स के स्वयं के सिस्टम इंटीग्रेटेड जावा पैकेज से ओरेकल आधारित जावा पैकेज में स्थानांतरित करने के लिए बहुत सारे बदलाव हुए थे। उपरोक्त समाधान मैक ओएस एक्स 10.8.2 के रूप में ठीक काम कर रहा है


4
+1 इस उत्तर के लिए, जो सही है, क्योंकि यह 'जावा वरीयताएँ' से पहले और बाद में मैक ओएस के संस्करणों पर काम करता है, और "-v" विकल्प को दिखाकर यह दर्शाता है कि आप जावा 6 का उपयोग कैसे कर सकते हैं, भले ही जावा 7 स्थापित किया गया है (जो मुझे चाहिए)। इसलिए मेरे मैक पर चलने वाले शेर (10.7.5) मैं "-v 1.6" के साथ एक ही कमांड का उपयोग करता हूं। यह महत्वपूर्ण है क्योंकि मुझे जावा 6 की आवश्यकता है और ओरेकल नॉट मैक ओएस - केवल जावा 7 के लिए एक प्रदान करता है, और यह मुझे जावा 7 स्थापित होने के बावजूद भी स्थापित जेएवा 6 का उपयोग करने की अनुमति देता है।
Rhubarb

1
इसके अलावा, इसे और अधिक लचीला बनाने के लिए: mikemainguy.blogspot.com/2014/11/…
Mainguy

इस भयानक जवाब के लिए अतिरिक्त जानकारी यहाँ मिल सकती है !
ब्रैड पार्क

इसने मेरे लिए सिएरा 10.12 में काम किया। 1.8 JKD को स्थापित करने के बाद निर्यात ने 1.7 से 1.8 को बदलकर काम किया। Java_home उपयोगिता का उपयोग करते हुए शानदार उत्तर !!
स्कॉट बायर्स

56

मेरे मामले में, मुद्दा यह था कि ओरेकल इसे एक अलग स्थान पर स्थापित कर रहा था जितना कि मैं इस्तेमाल किया गया था।

Oracle से डाउनलोड करें: http://java.com/en/download/mac_download.jsp?locale=en

  1. सत्यापित करें कि यह सिस्टम वरीयता में देखकर ठीक से स्थापित है:

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

    / लाइब्रेरी / इंटरनेट / प्लग-इन / JavaAppletPlugin.plugin / सामग्री / होम / बिन / java- फैलाव

  3. / Usr / bin / java से अपने नए इंस्टॉल में लिंक बनाएं

    sudo ln -fs / पुस्तकालय / इंटरनेट / प्लग-इन / JavaAppletPlugin.plugin / सामग्री / होम / बिन / जावा / usr / बिन / जावा

  4. अपने संस्करण की जाँच करें:

    java -version


मेरे लिए भी काम किया, मैंने अन्य स्पष्टीकरण की भी कोशिश की लेकिन Maverix के साथ कोई पैनल नहीं है जहाँ आप एक संस्करण संख्या का चयन कर सकते हैं और साथ ही .bash_profile को भी नहीं बदल सकते। उत्तम!
एलेक्स सीआईओ

ग्रहण को संकलक के तहत 1.7 नहीं दिख रहा है
लेजर हॉक

मेरे लिए काम किया !. = 1.6.0_65 से पहले और इस समाधान का उपयोग करने के बाद = 1.7.0_60 .... धन्यवाद! :)
मैथ्स

लेकिन ग्रहण अभी भी त्रुटि देता है 'जेवीएम साझा पुस्तकालय में jni_createjavavm प्रतीक नहीं होता है: .... :(
गणित

1
सहायता के लिए धन्यवाद! इसके अलावा और कुछ काम नहीं किया। रनिंग योसेमाइट
लॉर्डज़र्के

33

मैंने मैक पर स्थापित संस्करण से मिलान करने के लिए जावा संस्करण को अपडेट नहीं करने वाले टर्मिनल के साथ एक समान मुद्दे में भाग लिया था।

JAVA_HOME पर्यावरण चर सेट होने के साथ कोई समस्या नहीं थी

मैं एक अस्थायी और कुछ दर्दनाक लेकिन काम कर रहे समाधान के साथ आया हूं।

आप में .bash_profile लाइन जोड़ें:

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

(यह मेरी मशीन पर पथ है, लेकिन आप पर अलग हो सकता है, अपना प्राप्त करना सुनिश्चित करें। पथ / लाइब्रेरी / जावा / JavaVirtualMachines / से मेल खाना चाहिए)

दौड़ source ~/.bash_profile

जैसा कि मैंने उल्लेख किया है कि यह एक अस्थायी बैंड-सहायता समाधान है क्योंकि जावा होम पथ को हार्ड-कोड किया जा रहा है। वास्तव में नवीनतम प्राप्त करने के लिए पथ को सेट करने का कोई तरीका नहीं है जैसा कि Apple माना जाता है कि टर्मिनल के लिए पहले से ही कर रहा है और मुद्दा यह है कि Apple का java_home पर्यावरण चर अपडेट नहीं हो रहा है।


4
निर्देशिका खाली है। $ ls / पुस्तकालय / जावा / JavaVirtualMachines /
Pepijn

1
आपके पास संभवतः एक मुद्दा है जहां आपने जावा 7 स्थापित किया है। कृपया ओरेकल की वेबसाइट पर जाएं । "जावा एसई डेवलपमेंट किट 7u11" लिंक पर क्लिक करें, लाइसेंस समझौते को स्वीकार करें, और "jdk-7u11-macosx-x64inosg" डाउनलोड करें। जावा 7 को स्थापित करने के लिए dmg का उपयोग करें और इसे अपने JavaVirtualMachines निर्देशिका में रखना चाहिए।
डेरेक

यह 2019 की शुरुआत में Mojave 10.14.1 पर एक समाधान है
बिट्सैंड

27

एल कैपिटन के बाद /usr/bin/javaसे, नई "रूटलेस" नीति की शुरुआत के कारण, सिम्लिंक को हटाना मुश्किल है ।

इसलिए, मैंने बस अपनी फ़ाइल में नवीनतम जावा संस्करण (मेरे मामले में /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin) के लिए पथ जोड़ा है :PATH.bashrc

# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH

.bashrcवर्तमान सत्र के लिए अपनी फ़ाइल को पुनः लोड करने के लिए, source ~/.bashrcशेल में चलें । आपको इसे केवल उन सत्रों के लिए करना होगा जो .bashrcफ़ाइल बदलने से पहले शुरू किए गए थे ।

अब नवीनतम संस्करण का उपयोग किया जाता है, जब आप javaशेल में उपयोग करते हैं।


1
यह विशेष समाधान मेरे लिए मेरे मैक ओएस एक्स एल कैपिटान पर काम करता था। मैंने एल कैपिटान पर स्थापित सुरक्षा को बाईपास नहीं किया, लेकिन जावा संस्करण 1.8 स्थापित किया। निर्यात करना JAVA_HOME = / मेरा विशिष्ट पथ आदि आदि / काम नहीं किया (वरीयताओं पर जाने और 1.8 को पथ का पता लगाने के बाद)। कृपया ध्यान दें कि 1.6 अभी भी स्थापित है। मुझे एक .bashrc फ़ाइल बनानी थी और यहाँ बताए अनुसार रास्ता सेट करना था। मैंने जावा -वर्षा और शाज़म चलाया! इसने काम कर दिया।
जुमेराचोगोंग

मैं ऐसा करना चाहता था क्योंकि मैं El Capitan पर काम कर रहा हूं और कार्य करने के लिए कोई अन्य समाधान नहीं मिल सकता है। मैंने एक '.bashrc' फ़ाइल बनाई और ऊपर की तरह लाइन जोड़ी, लेकिन अगर मैं 'जावा-वर्सन' टाइप करता हूं तो मुझे अभी भी 1.6 मिलते हैं। क्या कोई ऐसा है जिसकी मैंने अनदेखी कर दी हो?
noLongerRandom

@ user3810073 शायद आपको source .bashrc.bashrc की सामग्री को पुनः लोड करने के लिए चलाने की आवश्यकता है
TabeaKischka

मेरे लिए काम किया। मैंने .bash_profile (अपने उपयोगकर्ता की होम डायरेक्टरी में), फिर स्रोत .bash_profile पर लाइन जोड़ी। तब java -version ने मुझे नवीनतम दिया। धन्यवाद!
mrmuggles

इस /usr/local/binतरह से सहानुभूति प्राप्त करके भी इसे प्राप्त किया जा सकता है : sudo ln -sf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" /usr/local/bin/java यह मान /usr/local/binलेना /usr/binआपके पहले है $PATHजो कि डिफ़ॉल्ट रूप से होना चाहिए।
Lifeofguenter

21

मेरे लिए सबसे आसान और साफ-सुथरा रास्ता है कि यहां बताए गए होमब्रे का उपयोग करके जावा स्थापित करें:

https://stackoverflow.com/a/28635465

brew update
brew cask install java

सरल और साफ समाधान !. एक जादू की तरह काम किया।
राहुल शुक्ला

2
यह एकमात्र समाधान है जिसने जावा और जेवैक दोनों को अपडेट किया है। धन्यवाद!
ldanilek

आकर्षण की तरह काम किया :) बहुत बहुत धन्यवाद
मोहम्मद सालेह

यह जावा के नवीनतम संस्करण को स्थापित करेगा, न कि Java7
Ivo

13

मूल मुद्दा: /usr/bin/javaशुरू में OSX द्वारा प्रदान किए गए एक की ओर इशारा कर रहा है ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) हमें इसे JDK इंस्टॉलर द्वारा डाउनलोड किए गए बिंदु पर इंगित करने की आवश्यकता है। नीचे दिए गए चरण OSX 10.10.4 Yosemite के लिए हैं।

  • सिस्टम वरीयताएँ खोलें -> जावा चुनें। जावा विंडो खुलती है।
  • सबसे ऊपर जावा टैब पर क्लिक करें। 'देखें' बटन पर क्लिक करें।
  • जावा रनटाइम पर्यावरण सेटिंग्स टैब नीचे के रूप में खुलता है: JRE सेटिंग्स टैब
  • Pathआइटम पर डबल क्लिक करें और पथ को कॉपी करें (cmd + c)। यह JDK इंस्टॉलर / updater द्वारा स्थापित नवीनतम है। मेरे मामले में, रास्ता था/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • टर्मिनल खोलें। इस चरण में, हम ln -sसिस्टम जावा को नवीनतम के बाइनरी (प्रतीकात्मक लिंक, कमांड) इंगित करने जा रहे हैं , जिसे हमने पिछले चरण में खोजा था। नीचे कमांड चलाएँ:

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

बस। सत्यापित करने के लिए, आप java -version टर्मिनल पर बस चला सकते हैं । इसे आपके द्वारा इंस्टॉल / अपडेट किया गया नवीनतम संस्करण आउटपुट करना चाहिए।


2
मेरे लिए काम करता है, सिवाय इसके कि मुझे ln कमांड में -f जोड़ना था। अन्यथा अगर ln के साथ असफल रहा: / usr / bin / java: फ़ाइल मौजूद है
डेल

मेरे मामले में मैं टर्मिनल कमांड के usr/local/binबजाय उपयोग करना चाहता हूंusr/bin
iAkshay

मुझे "ऑपरेशन की अनुमति नहीं है" मिल रही है।
शार्दुल

इस तरीके से पथ प्राप्त करना आदर्श है। मैं तब इसे निर्यात करने और संस्करण समस्या को हल करने के लिए bashrc पुनः लोड करने में सक्षम था। मेरे मामले में मैं Mojave 10.14.1 पर संस्करण 7 से 8 तक प्रवास कर रहा था
बिट्सैंड

12

आप अपने टर्मिनल में निम्नलिखित कमांड निष्पादित कर सकते हैं:

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

और यह नए के साथ पुराने को बदल देता है।


1
अजीब तरह से यह बदल जाता है, लेकिन फिर अगर मैं टर्मिनल बंद कर देता हूं और फिर से खुलता हूं, तो यह फिर से पुराने संस्करण को दिखाता है
पार्थ पटेल

यह सच है। बहुत हसीन थे। बहुत अस्थायी समाधान
एक उपयोगकर्ता

1
इसके बाद source ~/.bashrcइसे .bashrc फ़ाइल में जोड़ने के लिए इसे स्थायी करें
Azimjon Ilkhomov

10

मैंने किया

export JAVA_HOME=`/usr/libexec/java_home`

और यह मेरे जावा 8 मुद्दे को तय करता है।

इससे पहले:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

उपरांत:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

1
/usr/libexec/java_homeएक बहुत अच्छा संकेत है, धन्यवाद है!
रफी

1
संभव समाधान के टन पढ़ने के बाद मेरे लिए काम किया! धन्यवाद :)
ronnyrr

7

http://www.java.com/en/download/faq/java_mac.xml समझने के लिए एक अच्छी जगह है, जबकि Apple जावा को समर्थन रोक रहा है, क्यों जावा प्राथमिकताएं अब मौजूद नहीं हैं और System_Preferences => Java = पर निर्भर हैं > जावा यदि ओरेकल से जावा 7 स्थापित है।


2
यह अच्छी जानकारी है, लेकिन आपको वास्तव में सिर्फ एक लिंक से अधिक विवरण प्रदान करना चाहिए। यदि भविष्य में लिंक टूट गया है, तो आपका उत्तर वास्तव में बहुत उपयोगी नहीं होगा।
Psubsee2003

7

मई मैं आपको सुझाव देता हूँ कि आप Jenv टूल पर एक नज़र डालें

यह आपको अपने स्थापित JVMs के बीच किसी भी समय स्विच करने की अनुमति देगा।

बस के रूप में:

jenv global oracle-1.7

फिर बाद में परीक्षण के उद्देश्य के लिए:

jenv global oracle-1.6

और आपके पास बहुत अधिक कमांड उपलब्ध हैं।


इस जवाब के लिए +1 क्योंकि आप होमब्रे का उपयोग कर सकते हैं, यदि आप इसे अपने ओएस एक्स सिस्टम में पहले से ही उपयोग कर रहे हैं। दूसरों की तुलना में बहुत क्लीनर। अधिक जानकारी यहाँ: jenv.be
piku

6

JAVA_HOME पथ को हार्ड-कोड करना सबसे अच्छा विचार नहीं हो सकता है। /usr/libexec/java_homeउपयोगिता चौखट मैक OSX शेर 10.7.5 और JDK 1.7.0_13 पर मेरे लिए काम करता है। इसके मैन पेज के अनुसार, इसका उपयोग एप्पल के पुराने जावा प्रेफरेंस पेन के साथ किया जाना है, लेकिन यह ओरेकल (जावा कंट्रोल पैनल) द्वारा प्रदान किए गए प्रतिस्थापन के साथ काम करता प्रतीत होता है। उदाहरण के लिए, /usr/libexec/java_home -Vमेरी मशीन पर सभी स्थापित JDKs (दोनों 1.6। * और 1.7। * दोनों) की सूची चल रही है ।

इसलिए, जैसा कि अन्य थ्रेड्स में चर्चा की गई है (जैसे कि मुझे OSX पर JAVA_HOME को क्या सेट करना चाहिए ), मैं अब भी आपके .bash_profile पर निम्न पंक्ति जोड़ने की सलाह दूंगा:

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

मैं आपकी टिप्पणी से यहाँ सहमत हूँ, क्योंकि यह सबसे अच्छा अभ्यास है, लेकिन किसी कारण से java_home पर्यावरण चर को सही ढंग से सेट नहीं किया जा रहा है, यही कारण है कि यह काम नहीं करता है। मेरा मानना ​​है कि Apple के नवीनतम अपडेट में आपका सुझाव टर्मिनल में JAVA_HOME और डिफ़ॉल्ट रूप से संबंधित अन्य अनुप्रयोगों के लिए डिफ़ॉल्ट क्रिया है।
डेरेक

@ डेरेक "java_home पर्यावरण चर को सही ढंग से सेट नहीं किया जा रहा है" पर आपका वास्तव में क्या मतलब है? इस लेख के अनुसार /usr/libexec/java_homeउपयोगिता जावा 7 संस्करणों के साथ भी काम करने के लिए है, और यह स्थापित किए गए सबसे अधिक जेडीके के लिए पथ को वापस करता है। यह पूरी तरह से मेरी मशीन पर काम करता है।
ज़गयी

1
हाँ, यह काम करने वाला है लेकिन यह उस समस्या वाले लोगों के लिए नहीं है जिसका उल्लेख पेप्ज़िन ने किया था।
डेरेक

6

यह पागल है! Oracle एक इंस्टॉलर कैसे प्रदान करता है जो कुछ भी स्थापित नहीं करता है !?

मेरे लिए वैसे भी यह था:

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

जहां 1.8.0_31 आपका स्थापित जावा संस्करण है ...


Apple एक उचित तरीका क्यों नहीं प्रदान करता है?
11

6

यदि आपके पास अपनी मशीन पर कई जावा संस्करण हैं और आप इसे गतिशील रूप से रनटाइम पर चुनना चाहते हैं, अर्थात, मेरे मामले में, मेरे पास दो संस्करण हैं:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

आप उन्हें / etc / प्रोफ़ाइल सामग्री को संशोधित करके बदल सकते हैं। फ़ाइल के अंत में केवल दो पंक्तियों को जोड़ें (या संशोधित करें):

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

मेरे मामले में, यह निम्नलिखित की तरह होना चाहिए अगर मैं उपयोग करना चाहता हूं:

जावा 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

जावा 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

फ़ाइल सहेजने के बाद, कृपया चलाएँ source /etc/profile और इसे काम करना चाहिए। यहां परिणाम हैं जब मैं पहले और दूसरे विकल्प के अनुसार उपयोग करता हूं:

जावा 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

जावा 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

यदि आपका जावा फ़ोल्डर विभिन्न स्थानों में स्थित है तो प्रक्रिया समान है।


5

सरल उपाय

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

बहुत बढ़िया। इस समाधान ने मेरा दिन बना दिया। बहुत बहुत धन्यवाद
एक उपयोगकर्ता

3

मुझे लगता है कि आप jdk नहीं jre स्थापित करने का प्रयास कर सकते हैं। Jdk स्थापित करने से, java in / usr / bin / java को बदल दिया जाएगा, और सभी पुस्तकालय ठीक काम करेंगे।


3

यदि आपने Homebrew स्थापित किया है, तो आप जावा डिफ़ॉल्ट संस्करण को अधिक तेज़ी से बदलने के लिए जावा-स्विचर स्थापित कर सकते हैं

brew tap andycillin/tap
brew install java-switcher

तब आप अपने डिफ़ॉल्ट जावा संस्करण को स्विच करने के लिए सिर्फ एक कमांड का उपयोग कर सकते हैं।

java-switcher 1.7

या

java-switcher 10

धन्यवाद एंडी, यह आसान था।
ग्रीन्रोबो

1

जावा के संस्करण को खोजने के लिए आप इस कमांड को चला सकते हैं जो / लाइब्रेरी / इंटरनेट प्लगइन्स / के अंतर्गत है:

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion

1

यह इसलिए हो रहा है क्योंकि आपका .bash_profile परिवर्तनों को प्रतिबिंबित नहीं कर रहा है। इसे प्रतिबिंबित करें, बस निम्नलिखित कमांड का उपयोग करें

$ source .bash_profile

0

जब से मैंने इस मुद्दे का सामना नहीं किया है, मैं एक कूबड़ ले जा रहा हूं -

क्या आप इसे आज़मा सकते हैं:

सॉफ्ट लिंक "java_home" कहां इंगित करता है:

ls -lrt /usr/libexec/java_home

आउटपुट: (स्टॉन्टेड) ​​lrwxr-xr-x java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jav_home

** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions मेरा मैक निम्नलिखित का उत्पादन करता है:

 lrwxr-xr-x CurrentJDK ->
 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**

 lrwxr-xr-x   Current -> A
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4.2 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4 -> CurrentJDK

इसके आधार पर, हमें आगे बढ़ने का संकेत मिल सकता है?


मैक-ओएसएक्स के साथ जावा 7 के मुद्दों के बारे में इंटरनेट पर कुछ टिप्पणियों को पढ़ें और यह अवरुद्ध को दर्शाता है। इसे देखें: grep.dk/tag/xprotect-meta-plist । XProtect.meta.plist में मेरे पास जावा 7 और फ्लैश सूचीबद्ध है। यूटिलिल वल्नेरेबिलिटी पुलिस खेल रहा है
user1428716

0

मैं इस मुद्दे को फिर से Yosemite को स्थापित करके और फिर टर्मिनल (जावा-वर्जन) और (javac -version) पर जावा संस्करण को पार करके हल किया। यह पूरी तरह से अब काम करता है। यह जावा 7 में नहीं बदल रहा है क्योंकि संस्करण 6 अभी भी मौजूद है (कमांड + एन ) libray> java> javavirtualmachine> अपने javac current version.you को जावा घर पर संबोधित करने की आवश्यकता है।


0

मैंने इस मुद्दे को सुलझा लिया sudo rm /usr/bin/java

और मैंने आखिरी जावा एसई रनटाइम पर्यावरण डाउनलोड और स्थापित किया: http://www.oracle.com/technetwork/java/javase/downloads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/javaमेरे लिए काम नहीं किया क्योंकि मुझे मिल गया Operation not permitted। El Capitan अब "rootless" मोड (उर्फ सिस्टम इंटीग्रिटी प्रोटेक्शन) में कुछ सिस्टम निर्देशिकाओं की सुरक्षा करता है। यह macOS Sierra पर लागू होता है, और संभवतः भविष्य के लिए नए macOS संस्करण हैं।


0

Oracle साइट से वितरित JDK DMG के माध्यम से इंस्टॉल करना मेरे लिए सब कुछ ऑटो-अपडेट करता है। मैंने (एल कैपिटन में) अपडेट के माध्यम से System Preferences > Javaअपडेट देखा है, लेकिन यह कमांड लाइन को प्रतिबिंबित नहीं करता है। DMG के माध्यम से स्थापित करने का काम करता है।


0

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

$ ls  /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk  jdk1.8.0_91.jdk

अब आपके ~/.bashrcनिर्यात JAVA_HOMEमें संस्करण को निर्दिष्ट करते हुए:

if [ -e /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi

स्रोत bashrc फ़ाइल और जावा संस्करण अपडेट किया जाएगा:

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

0

नवीनतम 100% प्रभावी तरीका:


बैश में:

vim ~/.bash_profile

जोड़ना

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq बचाना
  • cmd + q बल छोडना bash
  • खुले बैश फिर से, और टाइप करें java -version

लेकिन वास्तव में यह पथ jdk नहीं jre को इंगित करता है।

यदि आप जेडीके को रास्ता बताना चाहते हैं, तो आपको जरूरत है

  1. सुनिश्चित करें कि आपने JDK स्थापित किया है न कि एक JRE रनटाइम
  2. पिछले पथ को बदलें PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk", आप /Library/Java/JavaVirtualMachinesयह सुनिश्चित करने के लिए जा सकते हैं कि आपने JDK का संस्करण स्थापित किया है जिसकी आपको उम्मीद थी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.