(यह सुनिश्चित नहीं था कि अगर यह एसयू पर जाना चाहिए ... माइग्रेशन निश्चित रूप से एक विकल्प है, लेकिन अधिक प्रोग्रामर यहां सवाल पढ़ते हैं, इसलिए यहां जाता है)।
मैं Mac OS X 10.8.4 चला रहा हूं, और मेरे पास Apple का JDK 1.6.0_51 और साथ ही Oracle का JDK 1.7.0_25 है। मैंने हाल ही में ओरेकल के 1.8 प्रीव्यू JDK को कुछ प्री-रिलीज़ सॉफ़्टवेयर के लिए स्थापित किया है जिनकी आवश्यकता है। अब, जब मैं / usr / libexec / java_home चलाता हूं, तो मुझे यह मिलता है:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
महान।
हालाँकि, चल रहा है:
$ java -version
यह दिखाता है:
java version "1.8.0-ea"
इसका मतलब है कि जावा का डिफ़ॉल्ट संस्करण वर्तमान में पूर्व-रिलीज़ संस्करण है, जो कुछ "सामान्य" पैकेजों को तोड़ता है (मेरे मामले में, VisualVM)।
मैं सेट नहीं कर सकता JAVA_HOMEक्योंकि लॉन्चिंग एप्लिकेशन कमांड चर (जैसे $ open /Applications/VisualVM.app) से लॉन्च करते समय भी पर्यावरण चर को अनदेखा करता है ।
तो, क्या कोई फाइल है जिसे मैं संपादित कर सकता हूं जहां मैं विश्व स्तर पर अपनी जेवीएम ऑर्डरिंग प्राथमिकताएं निर्धारित कर सकता हूं ?
(कृपया मुझे जावा प्रेफरेंस पैनल लॉन्च करने के लिए न कहें क्योंकि यह केवल काम नहीं करता है: इसमें कुछ उपयोगी नहीं है और केवल 4 जेवीएम में से एक को सूचीबद्ध करता है जो मैंने स्थापित किया है।)
अपडेट :
ओरेकल जेवीएम में रहते हैं /Library/Java/JavaVirtualMachines। JDK 1.8 निर्देशिका को फिर से नाम देना jdk1.8.0.jvm.xyzकुछ भी नहीं बदलता है: java_homeअभी भी इसे सही जगह पर पाता है, और चल रहा है / usr / bin / java अभी भी 1.8 JVM निष्पादित करता है। यह सिंकलिंक, आदि के साथ कोई समस्या नहीं है।
इसी तरह के सवालों के जवाब
हालांकि यह उत्तर प्रदान करता है कि एक हैक के लिए कितनी मात्रा में जावा के संस्करणों को java_home द्वारा उठाया जाएगा, यह अभी भी इस सवाल का जवाब नहीं देता है कि java_home अपना डिफ़ॉल्ट कैसे चुनता है और उपयोगकर्ता इसे गैर-विनाशकारी रूप से सेट कर सकते हैं या नहीं ।
/usr/bin/javaको इंगित करता है /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java। Versionsनिर्देशिका 1.8.0 JDK करने के लिए एक सिमलिंक न। इसके बजाय, इसमें एक निर्देशिका होती है, Aजो मददगार कहलाती है, जो Currentइंगित करती है। Aयह "JAVA_HOME" नहीं है। इसमें एक उपनिर्देशिका है जिसे Commandsएक javaकमांड कहा जाता है , लेकिन यह एक अपारदर्शी सार्वभौमिक बाइनरी है, जो कौन जानता है-क्या करता है। मुझे संदेह है कि इसका उपयोग करता है java_home, आदि यह तय करने के लिए कि जेवीएम का उपयोग करना है।
/usr/bin/javaसिर्फ एक सिम्लिंक है