रजिस्ट्री कुंजी '...' का मूल्य '1.7' है, लेकिन '1.6' की आवश्यकता है। जावा 1.7 इंस्टॉल किया गया है और रजिस्ट्री इसे इंगित कर रही है


95

मेरी विकास टीम को हाल ही में एक दूरस्थ विकास के माहौल के लिए मजबूर किया गया था जहां हम सर्वरों तक पूरी पहुंच नहीं रखते हैं। बदलाव से पहले हमारे पास एक JAR था जो JRE 7. के साथ-साथ जावा 1.7 x64 पर ठीक चल रहा था। जब हम नए सर्वर पर चले गए तो हमारा JAR ठीक चल रहा था, लेकिन तब एक सर्वर ने हमारे जावा को पुराने में "अपडेट" कर दिया संस्करण और हम उपयोग कर रहे थे की स्थापना रद्द। मुझे मत पूछो क्यों, मुझे नहीं पता। मैंने जावा 1.7 को फिर से स्थापित किया और JRE के साथ 1.6 की स्थापना रद्द की।

निम्न समस्या रनटाइम पर होती है, कोई बिल्ड त्रुटियाँ नहीं हैं:

Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.

मैंने अपने लैपटॉप पर वही JAR चलाया है जिसमें कोई समस्या नहीं है। सर्वर और मेरे लैपटॉप दोनों में JDK 1.7 और JRE 7 संबंधित% HOME% चर और सिस्टम PATH में हैं। मैंने JRE 6 को फिर से इंस्टॉल किया है और इसे बाद में सिस्टम वातावरण PATH चर में उसी परिणाम के साथ रखा है।

मैंने 1.6 को देखने के लिए रजिस्ट्री को वापस भी बदल दिया है और इसका परिणाम निम्नलिखित है, जिसे मैंने देखा और यह कई जावस स्थापित होने (मेरी मूल समस्या पर वापस आने) से प्रतीत होता है:

Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0

मैं किसी भी अंतर्दृष्टि की सराहना करता हूं आप सभी के रूप में मैं विभिन्न मंचों पर देख रहा हूं, लेकिन कुछ भी नहीं लगता है कि वास्तव में मेरी समस्या है। इसके अलावा, यह एक और सर्वर पर भी हुआ है जिसका हम उपयोग कर रहे हैं। धन्यवाद!

अपडेट: JAR को 1.6 या 1.7 में फिर से जोड़ने और JDK के मिलान के साथ कोई भाग्य नहीं। इसके अलावा, दुनिया में जावा का एक नया संस्करण पुराने संकलित संस्करण को क्यों तोड़ देगा?

जवाबों:


159

यह तब होता है जब आप किसी तरह से स्वयं को भ्रमित करते हैं। आप एक जावा 6 वीएम को चलाने की कोशिश कर रहे हैं, जहां यह एक जेआरई 7 पाया गया। यह समस्या तब भी दिखाई दे सकती है जब आप कमांड लाइन में टाइप करते हैं javaया java -versionगलत वातावरण में। JAR समस्या नहीं है, सिवाय इसके कि बहुत ही असंभावित मामले में जहां JAR में कोड उसके लिए विंडोज रजिस्ट्री में दिख रहा है (जो शायद आपका मामला नहीं है)।

मेरे मामले में, मैं था java.exe, javaw.exeऔर javaws.exeमें जावा 6 से Windows/System32फ़ोल्डर (नहीं जानता कि यह कैसे वहाँ हो गया)। बाकी JDK और JRE जहां अंदर PATH में पाए गए C:\Java\jdk_1.7.0\bin। ऊप्स!


62
एक ही समस्या का सामना करना पड़ा लेकिन उसी की स्थापना रद्द करने के बाद जावा 8 के साथ। Windows / System32 में मौजूद java.exe, javaw.exe और javaws..exe को हटाकर फिक्स्ड मुद्दा। वास्तव में अजीब coz यहां तक ​​कि मुझे नहीं पता कि यह वहाँ कैसे मिला।
C दीपक

2
नोटिस के लिए धन्यवाद, यह मदद करता है। मेरे मामले में JDK 1.7 बनाम JDK 1.8।
दहेज

7
X86 लोगों के लिए !! मैं मूल रूप से 1.8 jre युगल महीने पहले स्थापित करता था और 1.8 sdk चाहता था। java.exe, javaw.exeऔर के javaws.exeतहत संग्रहीत किया जाता है Windows/SysWOW64। इसके अलावा अगर किसी कारण से मैं जब स्थापित 1.8 एसडीके इसे स्थापित java.exe, javaw.exeऔर javaws.exeके तहत C:/ProgramData/Oracle/Java/javapath। पता नहीं क्यों, लेकिन मैंने उन्हें java -versionभी हटा दिया और अभी भी काम करता है।
चमकदार

1
System32 मेरे लिए महत्वपूर्ण था। मैंने सुनिश्चित किया है कि javapath का सही संस्करण है और मेरे पर्यावरण चर ठीक से सेट किए गए हैं ... कुछ भी काम नहीं किया जब तक कि मैंने तय नहीं किया कि System32 सौदा। यह सब एक ही पृष्ठ पर होना है।
बीके

2
indow / System32 में मौजूद java.exe, javaw.exe और javaws..exe को डिलीट करना मेरे लिए समस्या को हल करता है। धन्यवाद @C दीपक
ताहिर जिलानी

59

जावा 7 को चलाने वाले सिस्टम पर java 8 (jdk & jre) स्थापित करते समय बस इसी तरह की त्रुटि थी।

त्रुटि: रजिस्ट्री कुंजी 'Software \ JavaSoft \ Java रनटाइम

पर्यावरण '\ CurrentVersion' का मान '1.8' है, लेकिन '1.7' की आवश्यकता है।

त्रुटि: java.dll नहीं मिल सका त्रुटि: जावा एसई रनटाइम पर्यावरण नहीं मिल सका।

मेरा वातावरण सही तरीके से सेट किया गया था (पथ & java_home सही ढंग से परिभाषित), लेकिन समस्या उस तरीके से उत्पन्न होती है, जिससे पूर्व -8 जावा इंस्टॉलर ने काम किया था, जो यह है कि वे तीन निष्पादन योग्य (java.exe, javaw.exe & javaws.exe की प्रतिलिपि बनाते थे। ) विंडोज सिस्टम निर्देशिका के लिए। ये तब तक बने रहते हैं जब तक कि एक नया प्री -8 इंस्टॉलेशन नहीं हो जाता।

हालाँकि जावा 8 इंस्टॉलर एक नई निर्देशिका, C: \ ProgramData \ Oracle \ Java \ javapath में प्रतीकात्मक लिंक बनाता है, वास्तविक JRE 8 स्थान की ओर इशारा करता है।

इसका मतलब है कि आप वास्तव में पुराने 7 एक्सईएस चलाएंगे लेकिन नए 8 डीएलएल का उपयोग करेंगे।

तो, समाधान केवल 3 जावा एक्साइज को हटाने के लिए है, जैसा कि विंडोज़ सिस्टम डायरेक्टरी से ऊपर है।

यदि आप 64-बिट विंडोज पर 32-बिट जावा चला रहे हैं, तो एक्ज़ोज़ विंडोज के \ सिसोवोव64 में होगा, अन्यथा विंडोज \ सिस्टम 32 में।


यह एक कार्यशील समाधान है, मैंने उसी मुद्दे का सामना किया और इसने इसे हल किया।
सागर डी।

यह एक बेहतर समाधान है ... कम से कम मेरे लिए। धन्यवाद।
cbmeeks 15

28

मैंने java फ़ाइलों को windows / system32 में डिलीट कर दिया है और मैंने PATH वैरिएबल से c: \ ProgramData \ Oracle \ Java \ javapath को भी हटा दिया है, क्योंकि java 1.8 फ़ाइलों में 3 सिम्लिंक थे।

मेरे पास JDK 1.7 था% JAVA_HOME% चर में और java1.7 / बिन पाथ में।

PS1: मेरी समस्या जावा 1.7 और जावा 1.8 के बीच थी।

PS2: मैं इसे विक्टर के जवाब के लिए एक टिप्पणी के रूप में नहीं जोड़ सकता क्योंकि मेरे पास पर्याप्त अंक नहीं हैं।


3
समस्या: मैंने सेन्का सीएमडी का उपयोग करने की कोशिश करते समय 1.7 और 1.8 समस्या का सामना किया। समाधान: मैंने jdk1.7 / bin पथ को% PATH% पर्यावरण चर में जोड़ा और java फ़ाइलें (java.exe, javaw.exe, javaws..exe) को c: / windows / system32 निर्देशिका से हटा दिया। समस्या हल हो गई :)
saurabh

3
संपूर्ण f *** समस्या X थी: \ Windows \ SysWOW64 और X: \ Windows \ System32 जावा * .exe फ़ाइलें .. एक बार हटा दिया गया तो सभी को फिर से काम मिल गया ..
thiagoh

17

रजिस्ट्री संपादक को खोलने के लिए START मेनू में "regedit" टाइप करें

बाईं ओर रजिस्ट्री एक्सप्लोरर / ट्री मेनू पर "HKEY_LOCAL_MACHINE" पर जाएं

"HKEY_LOCAL_MACHINE" रजिस्ट्रियों के भीतर "सॉफ़्टवेयर" पर क्लिक करें

"सॉफ़्टवेयर" रजिस्ट्रियों के भीतर "JavaSoft" पर क्लिक करें

"JavaSoft" रेजिस्ट्री की सूची के भीतर "जावा रनटाइम एनवायरनमेंट" पर क्लिक करें यहां आप स्थापित रावा के विभिन्न संस्करणों को देख सकते हैं

"जावा रनटाइम पर्यावरण" पर क्लिक करें - दाहिने हाथ पर आपको 4-5 पंक्तियां मिलेंगी। कृपया "CurrentVersion" चुनें और दायाँ क्लिक करें (संशोधित विकल्प चुनें) संस्करण को "1.7" में बदलें

अब जादू पूरा हो चुका है


4

मुझे नहीं पता कि कोई भी अभी भी इस धागे का पालन कर रहा है, लेकिन हाल ही में मैंने इस मुद्दे को तब उठाया था जब मैंने विंडोज सेवा के रूप में एक्टिवएमक्यू 5.10 लॉन्च करने की कोशिश की थी।

मेरे पास एक JAVA_HOME पथ सेट नहीं था। मेरे पास जावा 6 और जावा 7 स्थापित था, लेकिन डिफ़ॉल्ट संस्करण v7 था। (यानी अगर मैंने एक कमांड विंडो खोली और "जावा-वर्सन" टाइप किया)।

यह वह जगह है जहां सुराग था - "जावा-वर्सन" ने "जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम (23.1-b03, मिश्रित मोड का निर्माण)" लौटाया, लेकिन मैंने Win32 सेवा स्थापित की थी ...

यह पता चला है कि यदि आप 64-बिट मशीन पर Win32 आवरण का उपयोग करते हैं तो यह किसी भी तरह जावा के विभिन्न संस्करण का उपयोग करने का निर्णय लेता है ...

तो मेरा फिक्स रैपर के 32-बिट संस्करण की स्थापना रद्द करना और 64-बिट संस्करण स्थापित करना था। मेरी मशीन पर घृणा; बस आदत मुझे लगता है ... लेकिन सौभाग्य से मैंने अंततः इस मुद्दे को हल कर दिया ...


1
आप इस समस्या का सामना कर सकते हैं यदि आपके पास जावा के 32 और 64 बिट संस्करण स्थापित हैं, और एक स्वचालित (या मेरे मामले में मजबूर कॉर्पोरेट) अपडेट केवल उनमें से 1 को अपडेट करता है। जावा के सभी उदाहरणों को अनइंस्टॉल करना और 32 और 64 बिट दोनों को फिर से स्थापित करना हल करेगा।
डैनीमैस्टर

0

मेरे विन 7 के लिए

विरोधाभास System32 फ़ोल्डर में java.exe और javaw.exe के रूप में था। उस फ़ोल्डर को खोलना मैं उन्हें नहीं देख सकता था लेकिन स्टार्ट मेनू में खोज का उपयोग करके मुझे उन फ़ाइलों के लिंक मिलते हैं, उन्हें हटा दिया। अगले खोज ने मुझे JAVA_HOME से फ़ाइलों के लिंक दिए

जादू )


-1

निर्देशिका को सही के साथ बदलें java.exeअर्थात आवश्यक JDK संस्करण पर जाएंjava.exe

cd C:/Program Files/Java/jdk1.7.0_25/bin

java.exeइस निर्देशिका से चलाएं , इसमें रजिस्ट्री और $ PATH सेटिंग्स की पूर्वता है।

java -jar C:/installed/selenium-server-standalone-2.53.0.jar 


-3

जार को संकलित करने के लिए संकलित किया गया था 1.6 । इसलिए आपको यह त्रुटि मिलती है। दो संकल्प:
1) जावा 1.6 का उपयोग करें

या

2) अपने पर्यावरण के लिए जार के अनुरूप होने के लिए पुनरावर्ती करें 1.7


मैंने वास्तव में दोनों किया है, लेकिन मुझे थोड़ा पीछे आने दो। JAR वास्तव में C # GUI के माध्यम से चलाया जा रहा है। JAR स्वयं कमांड लाइन के माध्यम से चलता है, लेकिन GUI के माध्यम से नहीं। मैं सोच रहा हूं कि यह संभवतः JAR के भीतर एक और JAR हो सकता है जो मैं चला रहा हूं (GUI को चलाने से संबंधित है)। क्या ऐसा हो सकता है? कि एक नेस्टेड JAR फ़ाइल 1.6 में संकलित की गई थी?
ब्रायन ए

यह सुनने में अटपटा लगता है। जावा संस्करण नीचे की ओर संगत हैं; जेडीके 6 के लिए / पर संकलित कोड जावा 7 पर बिना किसी बदलाव या संशोधन के काम करेगा।
जेसपर

@ जेस्पर मैं इसी तरह के मुद्दे के साथ भ्रमित हो सकता हूं जो मैं अक्सर ग्रहण में देखता हूं।
वुट 4Moo

1
@ जैस्पर यही वजह है कि यह सब मेरे लिए मायने नहीं रखता है। मुझे जो कुछ भी मिला है वह पुराने जावा पर चलने वाले एक JAR के नए संस्करण से संबंधित है जैसे कि 1.5 JRE के साथ 1.6। लेकिन यह समस्या पीछे की ओर लगती है।
ब्रायन ए

-3

Regedit का उपयोग करना, जावा 7. के अनुरूप प्रविष्टियों को हटा दें। यह काम करेगा।

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