एकाधिक जावा संस्करण विंडोज के तहत समवर्ती चल रहे हैं


84

हमारे पास जावा 5 पर चलने वाले कुछ एप्लिकेशन हैं और अब चाहेंगे कि जावा 6 पर आधारित एप्लिकेशन लाएं। क्या जावा के दोनों संस्करण विंडोज के तहत एक साथ रह सकते हैं?

क्या विभिन्न अनुप्रयोगों के लिए उपयुक्त जावा संस्करण सेट करने के लिए कोई नियंत्रण कक्ष है, या किसी अन्य तरीके से सेट किया गया है, उस विशेष अनुप्रयोग को चलाने के लिए जावा के किस संस्करण का उपयोग किया जाएगा?

जवाबों:


60

बेशक आप विंडोज के तहत जावा के कई संस्करणों का उपयोग कर सकते हैं। और विभिन्न एप्लिकेशन विभिन्न जावा संस्करणों का उपयोग कर सकते हैं। आपका आवेदन कैसे शुरू किया गया है? आमतौर पर आपके पास एक बैच फ़ाइल होगी जहां कुछ ऐसा होता है

java ...

यह PATH वैरिएबल का उपयोग करके जावा निष्पादन योग्य खोज करेगा। तो अगर जावा 5 पहली बार पेट पर है, तो आपको जावा 6 एप्लिकेशन चलाने में समस्या होगी। फिर आपको एक निश्चित जावा संस्करण का उपयोग करने के लिए बैच फ़ाइल को संशोधित करना चाहिए, जैसे JAVA6HOMEमान के साथ एक पर्यावरण चर को परिभाषित करके C:\java\java6(यदि जावा 6 इस निर्देशिका में स्थापित है) और बैच फ़ाइल कॉलिंग को बदलें

%JAVA6HOME%\bin\java ...

9
विंडोज़ पर, जावा इंस्टॉलर को आपके मौजूदा (पहले स्थापित) जावा इंस्टाल को बदलने से रोकने के लिए, आपको इसे STATIC = 1 तर्क पास करना होगा अर्थात कमांड लाइन से चलाएँ "jre-6u24-windows-i586-s.exe / STATIC = 1
टॉम चिवर्टन

4
जब मैं विंडोज 7 64 पर "jdk-6u27-windows-x64.exe / STATIC = 1" करता हूं, तो यह इंस्टॉल नहीं होता है, यह सिर्फ एक पॉप-अप विंडो लाता है जो msiexec के लिए उपयोग दिखा रहा है।
अभी तक

7
ओरेकल के इस दस्तावेज़ के अनुसार यह वास्तव में है jdk-...exe STATIC=1। मैंने यह कोशिश की और यह काम कर गया।
मैट

1
दोस्तों, आप JDK और JRE को भ्रमित कर रहे हैं। JRE STATICतर्क के रूप में लेता है, लेकिन क्या JDK भी है?
डेनियल

1
@reallyinsane मैं यह नहीं समझ सकता। उत्तर एक नौसिखिया के लिए सरल नहीं है। क्या आप मुझे एक पूर्ण ट्यूटोरियल से जोड़ सकते हैं?
प्लसप्लस

12

साइड-बाय-साइड कई JRE / JDK संस्करणों को स्थापित करना बिल्कुल संभव है। इसके अलावा, आपको ऐसा करने के लिए कुछ विशेष करने की ज़रूरत नहीं है, क्योंकि सूर्य प्रत्येक (प्रोग्राम फ़ाइलों के तहत) के लिए एक अलग फ़ोल्डर बना रहा है।

प्रत्येक एप्लिकेशन के लिए कौन सा JRE काम करता है, यह जांचने के लिए कोई कंट्रोल पैनल नहीं है। असल में, जो JRE काम करेगा, वह आपके PATH परिवेश चर में पहला होगा। आप उस या JAVA_HOME चर को बदल सकते हैं, या विशिष्ट cmd / bat फ़ाइलों को बना सकते हैं, जो आप चाहते हैं, प्रत्येक को अलग JRE के साथ पथ में लॉन्च करें।


2
मुझे विश्वास नहीं होता कि यह विंडोज़ के लिए सच है।
cmcginty

@ कैसी, आप किस हिस्से का जिक्र कर रहे हैं? यह सच क्यों नहीं है?
पचेरियर

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

यद्यपि यह अक्सर सच होता है कि जावा का नया संस्करण जावा प्रोग्राम ठीक चलेगा, फिर इसे जिस के साथ विकसित किया गया था, इसकी कोई गारंटी नहीं है। इसके अलावा, JAVA_HOME पर्यावरण चर को ज्यादातर मामलों में अद्यतन करने की आवश्यकता है।
पैट्रिक ओ'हारा

11

मुझे जावा फ़ाइलों का ट्रैक रखने के लिए विंडोज में CLASSPATH, JAVA_HOME, और PATH विचारों की अनाड़ीता से अवगत कराया गया था। मुझे कई JRE के कारण, और इसके साथ कैसे संतुष्ट करना है, यहाँ मिला। जानकारी को पुन: प्राप्त करने के बिना, मेरे मुकाबले बहुत अधिक चतुर व्यक्ति से, मैं इस मुद्दे पर उनके लेख की ओर इशारा करता हूं, जो मेरे लिए है, यह पूरी तरह से हल करता है।

लेख द्वारा: टेड न्यूयार्ड: कई जावा होम्स: जावा एप्स का अपना स्वयं का JRE है

जावा के घातीय वृद्धि के साथ सर्वर-साइड विकास भाषा के रूप में जावा विकास उपकरण, वातावरण, रूपरेखा और एक्सटेंशन में एक समान घातीय वृद्धि हुई है। दुर्भाग्य से, ये सभी उपकरण समान जावा वीएम इंस्टालेशन के तहत अच्छी तरह से एक साथ नहीं चलते हैं। कुछ को एक सर्वलेट 2.1-संगत वातावरण की आवश्यकता होती है, कुछ को 2.2 की आवश्यकता होती है। कुछ केवल JDK 1.2 या इसके बाद के संस्करण में, कुछ JDK 1.1 (और कोई उच्चतर) के तहत नहीं चलते हैं। कुछ को पूर्व-स्विंग 1.0 दिनों से "com.sun.swing" पैकेज की आवश्यकता होती है, अन्य को "javax.swing" पैकेज नामों की आवश्यकता होती है।

इससे भी बुरी बात यह है कि यह समस्या कॉरपोरेट उद्यम के भीतर भी पाई जा सकती है, क्योंकि कुछ महीने पहले जावा का उपयोग करके विकसित किए गए सिस्टम अचानक एक नए (प्रतीत होता है असंबंधित) एप्लिकेशन रिलीज़ द्वारा आवश्यक कुछ जावा एक्सटेंशन की स्थापना के कारण "काम नहीं" कर सकते हैं। यह निगम भर में जावा अनुप्रयोगों की तैनाती को जटिल बना सकता है, और ग्राहकों को आश्चर्यचकित करने के लिए नेतृत्व कर सकता है कि क्यों, कुख्यात "इंस्टालिंग-इस-ऐप-ब्रेक-माय-सिस्टम" की शुरुआत के पांच साल बाद माइक्रोसॉफ्ट की डीएलएल योजनाओं के साथ शुरू हुआ, हमने इसे आश्रय दिया 'इससे ​​बहुत आगे नहीं बढ़ पाया। (वास्तव में, नई .NET पहल वास्तव में वर्णित कुख्यात "DLL-Hell" समस्या को हल करने का प्रयास करती है।)

यह पेपर बताता है कि जावा इंस्टॉलेशन को कैसे कॉन्फ़िगर किया जाए, जैसे कि किसी दिए गए एप्लिकेशन को अपना निजी, JRE प्राप्त होता है, ग्राहकों को (या सिस्टम एडमिनिस्ट्रेटर) पागल किए बिना कई जावा वातावरण को सह-अस्तित्व देने की अनुमति देता है ...


8
मुझे लगता है कि उपरोक्त उत्तर में दिया गया लिंक अब मौजूद नहीं है। मुझे
आलोक मिश्रा

4

विशिष्ट अनुप्रयोगों के लिए अलग से JAVA_HOME पर्यावरण चर को बदलना संभव होना चाहिए।

कमांड लाइन से या बैच स्क्रिप्ट से शुरू करते समय आप set JAVA_HOME=C:\...\j2dskXXXJAVA_HOME वातावरण को बदलने के लिए उपयोग कर सकते हैं ।

यह संभव है कि आपको PATHसही जावा बाइनरी का उपयोग करने के लिए पर्यावरण चर को बदलने की भी आवश्यकता है । ऐसा करने के लिए आप उपयोग कर सकते हैं set PATH=%JAVA_HOME%\bin;%PATH%


4

हम SDKMan का उपयोग करके एक ही मशीन पर जावा डेवलपमेंट किट के कई संस्करण स्थापित कर सकते हैं।

एसडीकेमैन के बारे में कुछ बिंदु निम्नानुसार हैं:

  1. SDKMan उपयोग करने के लिए स्वतंत्र है और इसे ओपन सोर्स समुदाय द्वारा विकसित किया गया है।
  2. SDKMan को बैश में लिखा गया है और इसे केवल आपके सिस्टम पर मौजूद होने के लिए कर्ल और जिप / अनज़िप प्रोग्राम की आवश्यकता है।
  3. एसडीकेमैन जेवीएम जैसे जावा, ग्रूवी, स्काला, कोटलिन और सीलोन के लिए लगभग 29 सॉफ्टवेयर डेवलपमेंट किट स्थापित कर सकता है। चींटी, ग्रैडल, ग्रेल्स, मावेन, एसबीटी, स्पार्क, स्प्रिंग बूट, वर्टएक्स।
  4. हमें _HOMEऔर PATHपर्यावरण चर सेट करने के बारे में चिंता करने की आवश्यकता नहीं है क्योंकि SDKMan इसे स्वचालित रूप से संभालता है।

SDKMan किसी भी UNIX आधारित प्लेटफ़ॉर्म पर जैसे Mac OSX, Linux, Cygwin, Solaris और FreeBSD पर चल सकता है और हम इसे निम्न आदेशों का उपयोग करके स्थापित कर सकते हैं:

$ curl -s "https://get.sdkman.io" | bash  
$ source "$HOME/.sdkman/bin/sdkman-init.sh" 

क्योंकि SDKMan को बैश में लिखा गया है और केवल आपके सिस्टम पर उपस्थित होने के लिए कर्ल और ज़िप / अनज़िप की आवश्यकता है। साथ ही आप या तो पहले स्थापित करके खिड़कियों पर SDKMan स्थापित कर सकते हैं Cygwin या विंडोज के लिए Git बैश वातावरण और फिर आदेशों ऊपर चल रहा है।

कमांड sdk list javaहमें जावा संस्करणों की एक सूची देगा जिसे हम एसडीकेएमएएन का उपयोग करके स्थापित कर सकते हैं।

जावा 8 को स्थापित करना

$ sdk install java 8.0.201-oracle

जावा 9 को स्थापित करना

$ sdk install java 9.0.4-open 

जावा 11 को स्थापित करना

$ sdk install java 11.0.2-open

जावा संस्करण की स्थापना रद्द करना

यदि आप किसी भी JDK संस्करण को अनइंस्टॉल करना चाहते हैं, तो 11.0.2-ओपन आप निम्नानुसार कर सकते हैं:

$ sdk uninstall java 11.0.2-open

वर्तमान जावा संस्करण स्विच करना

यदि आप सभी टर्मिनलों और अनुप्रयोगों के लिए JDK के एक संस्करण को सक्रिय करना चाहते हैं, तो आप कमांड का उपयोग कर सकते हैं

sdk default java <your-java_version>

उपरोक्त आदेश भी PATH और JAVA_HOME चर को स्वचालित रूप से अपडेट कर देंगे। आप मेरे लेख पर पढ़ सकते हैं कि एक ही मशीन पर जावा के कई संस्करण कैसे स्थापित करें


1
यह नॉन विंडोज यूजर के लिए है।
गमरुह

@gumuruh आप इसे विंडोज़ के रूप में भी स्थापित कर सकते हैं, क्योंकि SDKMan को बैश में लिखा गया है और केवल आपके सिस्टम पर उपस्थित होने के लिए कर्ल और ज़िप / अनज़िप की आवश्यकता है। आप विंडोज़ पर्यावरण के लिए पहले सिग्विन या गिट बैश को स्थापित करके और फिर ऊपर दिए गए कमांड से एसडीकेमैन को विंडोज़ पर स्थापित कर सकते हैं।
नरेश जोशी

2

जावा को "जावा-वर्जन: 1.5" के साथ शामिल करना, आदि जावा के सही संस्करण के साथ चलना चाहिए। (स्पष्ट रूप से 1.5 को उस संस्करण से बदलें जो आप चाहते हैं।)

यदि जावा विंडोज पर ठीक से स्थापित है, तो रजिस्ट्री में संग्रहीत प्रत्येक संस्करण के लिए वीएम के रास्ते हैं जो इसका उपयोग करता है इसलिए आपको विंडोज पर पर्यावरण संस्करणों के साथ गड़बड़ करने की आवश्यकता नहीं है।


मेरा मानना ​​है कि यह केवल "पब्लिक" जेआरई के साथ काम करता है। क्लाइंट मशीनों पर उत्कृष्ट, डेवलपर्स के लिए थोड़ा दर्द जो सार्वजनिक JRE स्थापित नहीं करते हैं। बैच फ़ाइल से बहुत बेहतर है।
जेम्स स्कैच

2

या लिंक का उपयोग करें। हालांकि, यह एक चल रहे वातावरण में पथ को अद्यतन करने के लिए अप्रिय है, यह JRE / JDK के एक नए संस्करण के लिए एक लिंक को फिर से बनाना आसान है। इसलिए:

  • JDK के विभिन्न संस्करणों को स्थापित करें जिन्हें आप उपयोग करना चाहते हैं
  • उस फ़ोल्डर का लिंक या तो जंक्शन से या अंतर्निहित mklink कमांड से बनाएं
  • PATH को लिंक पर सेट करें
  • यदि जावा के अन्य संस्करण का उपयोग किया जाना है, तो लिंक को हटा दें, एक नया बनाएं, PATH / JAVA_HOME / हार्डकोड स्क्रिप्ट अनछुए रहें

2

मैं अपने स्वयं के जावा वर्जन के साथ जेमीटर शुरू करते समय एक सरल स्क्रिप्ट का उपयोग करता हूं

setlocal set JAVA_HOME="c:\java8" set PATH=%JAVA_HOME%\bin;%PATH%; java -version

"पोर्टेबल" रखने के लिए आप इस विधि का उपयोग यहां कर सकते हैं:

https://www.whitebyte.info/programming/java/how-to-install-a-portable-jdk-in-windows-without-admin-rights


1

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


0

जावा वेब स्टार्ट का उपयोग करते हुए, आप कई JRE इंस्टॉल कर सकते हैं, फिर आपको जो आवश्यक है उसे कॉल करें। जीतने पर, आप एक .bat फ़ाइल बना सकते हैं:

1- ऑनलाइन संस्करण: < your_JRE_version \ bin \ javaws.exe> ​​-localfile -J-Djnlp.application.href = <.jllp फ़ाइल का url .jnlub> -localfile -J "< path_temp_jnlp_file_jnlp >।

2- कैश से लॉन्च: < your_JRE_version \ bin \ javaws.exe> ​​-Localfile -J "< path_of_your_local_jnlp_file .jnlp >"।

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