JAVA_HOME पर्यावरण चर के अस्तित्व का कारण क्या है?


92

कई जावा आधारित एप्लिकेशन को JAVA_HOME env वैरिएबल सेट करने की आवश्यकता होती है। इस चर का उद्देश्य क्या है?



2
मुझे लगता है कि प्रश्न का उत्तर अभी तक नहीं है। जब तक जावा को निष्पादित करने के लिए, यह चर होना आवश्यक नहीं है यदि आपके पास पथ में बाइनरी के साथ फ़ोल्डर है। सभी उत्तर स्पष्ट बताते हैं: "जहां जावा स्थापित किया गया था"। लेकिन क्यों: जावा अनुप्रयोगों को चलाने का क्या मतलब है?
वुल्फ

7
इन सभी टिप्पणियों और उत्तरों के बावजूद, मुझे इस पर्यावरण चर को निर्धारित करने का कोई वास्तविक कारण नहीं दिखता है । कोई औचित्य नहीं। मैं इसे wsdl2java के साथ सेट करने की कोशिश कर रहा था। यदि मैं इस उपकरण का उपयोग नहीं कर रहा था, तो env चर की कोई आवश्यकता नहीं है .... प्रतीत होता है कि कुछ उपकरण इस संस्करण का उपयोग करते हैं। लेकिन क्यों?
थोफिर

@ तुफिर - मैंने हालांकि स्पष्ट रूप से कहीं भी कारण को नहीं देखा है । - JAVA_HOME सिर्फ सम्मेलन है। इसका कोई विशेष अर्थ नहीं है, इसके अलावा हर कोई इसे उपयोग करने के लिए सहमत हुआ है - एकमात्र उपयोग जो मैं देख रहा हूं वह यह है कि यह उपकरण जेआरई के बीच अंतर करने की क्षमता देता है जो सामान्य रूप से पैटह चर और जेडडीके में सेट होता है। आम तौर पर JAVE_HOME JDK पर सेट होता है। - यह सच है। पीएटीएच के साथ आपके पास निर्देशिका के क्रम के साथ कोई व्यवहार नहीं है जहां जावा एक्सई को खोजने के लिए कई स्थान हो सकते हैं।
रोहन

जवाबों:


22

पर्यावरण चर ऐसे तार होते हैं जिनमें ड्राइव, पथ या फ़ाइल नाम जैसी जानकारी होती है।

JAVA_HOME पर्यावरण चर उस निर्देशिका की ओर इशारा करता है जहां जावा रनटाइम वातावरण (JRE) आपके कंप्यूटर पर स्थापित है।


40
एक सुधार: JAVA_HOME को JDK को इंगित करना चाहिए JRE नहीं। कई एप्लिकेशन अंतर के बारे में परवाह नहीं करते हैं, लेकिन यह कुछ के लिए महत्वपूर्ण है।
क्रिस नवा

4
JDK में JRE फोल्डर भी उपलब्ध है। इसलिए, JAVA_HOME की सहायता से, एक एप्लिकेशन JDK के साथ-साथ JRE का पता लगा सकता है।
दुष्ट बालक

@ क्रिसनवा: जेआरए_एचओएमई को एक जेआरई इंस्टॉलेशन की ओर इशारा करते हुए लगता है कि कुछ मामलों में मान्य है (सबसे गैर-विकास के मामलों में मुझे लगता है): stackoverflow.com/questions/17601827/… । तो "कहना चाहिए" बहुत ज्यादा कह रहा है।
सीआईसी

18

उद्देश्य यह है कि जावा कहाँ स्थापित है। $JAVA_HOME/bin/javaजावा रनटाइम निष्पादित करना चाहिए।


4
लेकिन यह बेवकूफी है, क्योंकि जावा पथ में होना चाहिए, और बाइनरी स्वयं का पता लगा सकता है और एक रिश्तेदार पथ का उपयोग करके अन्य फाइलें खोल सकता है।
LtWorf 10

3
यह उपयोगी है जब जावा $ PATH पर नहीं है , उदाहरण के लिए जब आपके पास कई एसडीके इंस्टॉलेशन हैं।
हेकॉन

बाइनरी के लिए 1 तर्क निष्पादन योग्य का पूरा नाम है, जावा को अपनी स्वयं की निर्देशिका खोजने के लिए रास्ते में होने की आवश्यकता नहीं है।
लेटवॉर्फ

@ हाकॉन जैसा कि कई जेडीके स्थापित करने की कोशिश कर रहे हैं, आप रास्ते में जावा क्यों नहीं चाहेंगे? वैसे भी Windows java_home से जावा का पता कैसे लगाता है? मुझे लगा कि पथ कमोबेश "उन स्थानों की सूची के रूप में परिभाषित किया जाएगा जहां ओएस निष्पादन योग्य लोगों की तलाश करेंगे"।
LastStar007

7

जब आप एक जावा प्रोग्राम चलाते हैं, तो आपको पहले जेवीएम शुरू करने की आवश्यकता होती है, आमतौर पर यह एक निष्पादन योग्य चलाकर किया जाता है, विंडोज पर यह java.exe है । आप उदाहरण के लिए बहुत सारे तरीकों से बस एक पूर्ण रास्ता दे सकते हैं:

C:\somedir\bin\java.exe

या यह आपके पेट पर हो सकता है।

आप कमांड लाइन तर्क के रूप में निर्दिष्ट करते हैं कुछ क्लास फाइलें या जार फाइलें जिसमें क्लास फाइलें होती हैं जो आपका प्रोग्राम है। लेकिन यह पर्याप्त नहीं है, java.exe को स्वयं विभिन्न अन्य संसाधनों की आवश्यकता है, कम से कम सभी जावा पुस्तकालयों की नहीं। पर्यावरण चर JAVA_HOME सेट करके आप निर्दिष्ट करते हैं कि JRE, और इसलिए उन सभी रनटाइम संसाधनों को पाया जाना है। आपको यह सुनिश्चित करना चाहिए कि आपके द्वारा निष्पादित विशेष जावा JAVA_HOME की सेटिंग से मेल खाता है।

आपको JAVA_HOME\binअपने रास्ते पर जल्दी डालने की भी आवश्यकता हो सकती है ताकि यदि java.exeस्पैन स्वयं की एक प्रति (उदाहरण के लिए जेएसपी संकलित करने के लिए) यह सही संस्करण उठाता है।


5

JAVA_HOMEएक पर्यावरण चर है

इसे अलग-अलग ऑपरेटिंग सिस्टम पर सेटअप करना होगा। निम्नलिखित लिंक देखें।

अधिक जानकारी के लिए यहां भी देखें ।


1
आप के environmentसाथ सामना कर रहे हैं path, जो अलग-अलग चीजें हैं लेकिन विंडोज में ठीक उसी तरह से उपयोग किया जाता है जैसे लिनक्स में।
वैल

1
@val सिर्फ इशारा कर रहे हैं, तब से उनके जवाब में सुधार किया गया है।
बार्लोप


5

के अनुसार @dirai यहाँ JAVA_HOMEजावा स्वयं द्वारा उपयोग नहीं किया गया है, लेकिन उदाहरण के लिए Apache Tomcat जैसे कुछ तीसरे पक्ष के उपकरण। अधिकांश एप्लिकेशन हालांकि इस चर को सेट किए बिना काम करेंगे लेकिन कुछ अप्रत्याशित व्यवहार दिखा सकते हैं।


3

JAVA_HOMEआपको कई जावा इंस्टॉलेशन चलाने की अनुमति देता है। यहां तक ​​कि अगर आपके पास /usr/lib/jvm/java-1.8.0/bin/java पहले आपके पैट में है, तो यह कहने में सक्षम होने के लिए उपयोगी है JAVA_HOME=/usr/lib/jvm/java-1.5.0और डिफ़ॉल्ट "जावा" है जिसके साथ आप प्रोग्राम चलाते हैं एक पर्यावरण सेटिंग के मामले के रूप में, दूसरे का उपयोग करें। यह एक प्रोग्रामर को उनकी ज़रूरत के जावा का उपयोग करने की अनुमति देता है, भले ही यह सामान्य सिस्टम स्थान में स्थापित न हो, और उस वैकल्पिक संस्करण के साथ रिवर्स संगतता प्रदान करें या परीक्षण करें। और यह एक अन्य इंस्टॉल किए गए प्रोग्राम जैसे कि जावा के लिए एक प्रमुख संस्करण अपडेट द्वारा पथ में रीसेट होने के लिए असुरक्षित नहीं है।

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