java जेएनआई साझा लाइब्रेरी(जेडीके) लोड करने में विफल




windows eclipse (24)

जब मैं Eclipse खोलने का प्रयास करता हूं, तो पॉप-अप संवाद कहता है:

जेएनआई साझा लाइब्रेरी को लोड करने में विफल "सी: / जेडीके /bin/client/jvm.dll" `।

इसके बाद, ग्रहण बल बंद हो जाता है।

यहां कुछ बिंदु दिए गए हैं जिन्हें मैं बनाना चाहता हूं:

  • मैंने यह देखने के लिए जांच की कि क्या उस रास्ते में कुछ भी मौजूद है या नहीं। यह अस्तित्व में है
  • मेरा ग्रहण और जावा एसई विकास किट 64-बिट दोनों हैं। मैंने अपने सिस्टम की जांच की, और यह 64-बिट संभाल सकता है।
  • मैंने Google और स्टैक ओवरफ़्लो पर इस समस्या की खोज की है, और मुझे मिला एकमात्र उत्तर जेडीके और ग्रहण के 32-बिट संस्करणों को डाउनलोड करना था।

32-बिट संस्करणों को डाउनलोड करना कुछ ऐसा है जो मैं केवल एक अंतिम उपाय के रूप में करना चाहता हूं।
इस मुद्दे को हल करने के लिए क्या सुझाव दिया जाएगा?


वैकल्पिक रूप से, JRE और ग्रहण का वही "बिट" संस्करण प्राप्त करें और फिर नीचे दिए गए लक्ष्य के साथ एक नया शॉर्टकट बनाएं (स्थापित जेआरई और ग्रहण स्थान / पथ को प्रतिस्थापित करें):

"C:\studio\eclipse.exe" -vm "C:\Program Files\Java\jre7\bin\server\jvm.dll" eclipse.vm="C:\Program Files\Java\jre7\bin\server\jvm.dll" java.home="C:\Program Files\Java\jre7" java.runtime.version=1.7.0

यह ट्रिक काम आना चाहिए।


जैसा कि पहले से ही कई लोगों ने बताया है, यह Eclipse और Java दोनों के लिए 32 बनाम 64 बिट समस्या है। आप 32 और 64 बिट मिश्रण नहीं कर सकते हैं। चूंकि ग्रहण JAVA_HOME उपयोग नहीं करता है, इसलिए आपको ग्रहण को लॉन्च करने से पहले अपने पैथ को बदलना होगा ताकि यह सुनिश्चित किया जा सके कि आप न केवल जावा के उचित संस्करण का उपयोग कर रहे हैं, बल्कि 32 या 64 बिट (या आईएनआई फ़ाइल को संशोधित करते हुए जयथ के रूप में संशोधित करें) )।

यदि आप किसी कंपनी-शेयर से ग्रहण स्थापित कर रहे हैं, तो आपको यह सुनिश्चित करना चाहिए कि आप कौन सी ग्रहण संस्करण को अनजिप कर रहे हैं, और उचित प्रोग्राम फ़ाइलें निर्देशिका को अनजिप कर सकते हैं ताकि ट्रैक ट्रैक रखने में मदद मिल सके, फिर पथ को बदलें (या तो स्थायी रूप से ( विंडोज़) नियंत्रण कक्ष -> सिस्टम या सेट PATH=/path/to/32 or 64bit/java/bin;%PATH% (शायद एक बैच फ़ाइल बनाएं यदि आप इसे अपने सिस्टम और / या उपयोगकर्ता वातावरण में सेट नहीं करना चाहते हैं चर)। याद रखें, 32-बिट प्रोग्राम फ़ाइलों में है (x86)

यदि अनिश्चित है, तो अगर आपको त्रुटि मिलती है, तो एक्लिप्स लॉन्च करें, अपने पैथ को जावा के दूसरे 'बिट' संस्करण में बदलें, और फिर पुन: प्रयास करें। फिर ग्रहण निर्देशिका को उपयुक्त प्रोग्राम फ़ाइलें निर्देशिका में ले जाएं।


मुझे एक ही समस्या थी

मैंने इसे 64 बिट जेवीएम इंस्टॉल करके हल किया

http://www.java.com/en/download/manual.jsp



जावा के कई संस्करण हैं, सन जेडीके और जेआरॉकिट, दोनों 32 बिट और 64-बिट इत्यादि। और जावा ईई (जुनो) के लिए 64-बिट ग्रहण के नए इंस्टॉलेशन के साथ इस समस्या में भाग गए।

क्या काम नहीं किया:

पीटर राडर द्वारा सुझाए गए 64-बिट तीनों:

मैं 64-बिट ओएस (64 विंडोज) पर 64-बिट ग्रहण का उपयोग कर रहा हूं।

मैंने सुनिश्चित किया कि सूर्य जेडीके 7 64-बिट डिफ़ॉल्ट जावा संस्करण था। जब मैंने कमांड लाइन (cmd.exe) से "जावा-वर्जन" टाइप किया, तो सूर्य जेडीके 7 64-बिट वापस कर दिया गया ...

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

इससे मेरे लिए समस्या का समाधान नहीं हुआ।

क्या काम किया है:

जयेश कवथीया द्वारा सुझाए गए अनुसार eclipse.ini को -vm विकल्प जोड़ना:

मैंने eclipse.ini को निम्नलिखित जोड़ा:

-vm
C:/apps/java/jdk7-64bit/bin/javaw.exe

ध्यान दें:

मुझे अपनी मशीन पर जेडीके या जेआरई के विभिन्न संस्करणों में से किसी एक को अनइंस्टॉल करने की आवश्यकता नहीं थी।


ओएस, जेडीके और ग्रहण की कामकाजी जोड़ी:

  • 32-बिट ओएस - 32-बिट जेडीके - 32-बिट ग्रहण (केवल 32-बिट)
  • 64-बिट ओएस - 32-बिट जेडीके - 32-बिट ग्रहण
  • 64-बिट ओएस - 64-बिट जेडीके - 64 बिट ग्रहण (केवल 64-बिट)

मेरे पास कई जेडीके और जेआरई स्थापित थे।

उनमें से प्रत्येक को पैथ चर में अपनी प्रविष्टि थी, सब कुछ कम या कम काम कर रहा था।

पाथ चर से निर्णय लेते हुए, कुछ प्रतिष्ठान पूरी तरह से बेकार थे, क्योंकि उनका कभी भी उपयोग नहीं किया गया था। बेशक, "निष्क्रिय" जावा को मैन्युअल रूप से ग्रहण के भीतर से संदर्भित किया जा सकता है यदि मुझे आवश्यकता हो, लेकिन मैंने कभी ऐसा नहीं किया, इसलिए मुझे वास्तव में उनकी आवश्यकता नहीं थी। (कम से कम मैंने उस समय सोचा था ...)

मैंने गड़बड़ी को साफ किया, सभी मौजूदा जावा को हटा दिया, केवल जेडीके + जेआरई 1.7 64-बिट स्थापित किया।

एक्लिप्स 'इंस्टॉलेशन' में से एक बाद Failed to Load the JNI shared Library में Failed to Load the JNI shared Library और ताजा स्थापित jvm.dll सापेक्ष एक दिया गया पथ जहां यह jvm.dll होना सोचा था।

असफल ग्रहण मेरे सभी आईडीई का एकमात्र ऐसा था जो अभी भी मेरे अन्य सभी 64-बिट सेटअप पर 32-बिट संस्करण था।

eclipse.ini में अक्सर उल्लेख किए गए वीएम तर्कों को जोड़ना मेरे मामले में कोई उपयोग नहीं था (क्योंकि मेरे पास केवल संबंधित जेडीके / जेआरई था।)

मैं यह पता लगाने में भी असमर्थ था कि यह ग्रहण 32-बिट या 64-बिट संस्करण था (मैं इसे टास्क मैनेजर में नहीं देख सकता था, क्योंकि इस ग्रहण 'स्थापना' शुरू नहीं होगी। और चूंकि उसके पास था थोड़ी देर के बाद से मैंने इसे स्थापित किया था, मैं इसके संस्करण को भी याद नहीं कर सका।)

यदि आप एक नए जेडीके और पुराने JRE तो आप भी परेशानी के लिए हो सकते हैं, लेकिन फिर यह एक java.lang.UnsupportedClassVersionError लगता है, IIRC


साइट से 64 बिट जेवीएम डाउनलोड किया और इसे मैन्युअल रूप से स्थापित किया और सिस्टम पथ चर अद्यतन किया। इस मुद्दे को हल किया।

  1. मेरे सिस्टम में डिफ़ॉल्ट JVM स्थापित है "सी: \ प्रोग्राम फ़ाइलें" में था
    (X86) \ जावा \ jre7 "
  2. "सी: \ प्रोग्राम फ़ाइलें \ जावा \ jre7" में मैन्युअल रूप से स्थापित JVM इंस्टॉल हो गया है और इस पथ को सिस्टम पथ चर में अद्यतन करने के बाद यह काम करता है।

बस पाथ पर्यावरण परिवर्तक की जांच करें। मेरे कंप्यूटर में -> गुण -> उन्नत सिस्टम सेटिंग्स -> पर्यावरण चर -> (बाईं ओर ऊपरी विंडो "पीसी के कुछ नाम" के लिए उपयोगकर्ता चर "") केवल पैथ चर की जांच करें। यदि यह अस्तित्व में नहीं है तो इसे निम्न के साथ बनाएं -> सी: \ प्रोग्राम फ़ाइलें (x86) \ जावा \ jre7 \ bin <-

मेरे ग्रहण को अद्यतन करने के बाद मुझे एक ही समस्या का सामना करना पड़ा। मैंने पाया है कि पथ 64-बिट संस्करण से पूछा गया था, लेकिन मेरे पास 32-बिट भिन्न पथ था। यह मेरे लिए सहायक था। पीएस: मेरे पास 64-बिट ओएस, 32-बिट जेआरई और 32-बिट ग्रहण है। सब ठीक काम करता है :)


सुनिश्चित करें कि आप प्रशासक अधिकारों के साथ ग्रहण शुरू कर रहे हैं।


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

  1. अपनी जेआरई निर्देशिका में jvm.dll खोजें: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. अपनी जेडीके निर्देशिका में jvm.dll खोजें: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. jvm.dll को जेआरई निर्देशिका से अपनी जेडीके निर्देशिका में कॉपी करें और jvm.dll में jvm.dll को ओवरराइट करें।

बस मामले में बैकअप बनाना न भूलें। जावा से संबंधित कुछ भी इंस्टॉल या अनइंस्टॉल करने की आवश्यकता नहीं है।


मेरे ऊपर दिए गए उत्तरों ने मुझे इतना लुभाया, कि मैंने ओएस, Eclipse और JVM तीनों के साथ सभी संभव संयोजनों को चलाने के लिए निर्णय लेने का फैसला किया। वैसे भी, जो भी मेरी पोस्ट खोद रहा है और पढ़ रहा है, निम्न को हॉट स्पॉट के रूप में जांचें (मैं विंडोज 7 उपयोगकर्ता हूं)।

  1. आप समझते हैं कि प्रोग्राम फ़ाइलें और प्रोग्राम फ़ाइल (x86) दो अलग-अलग फ़ोल्डर्स हैं ... x86 प्रोग्राम के 32-बिट संस्करण के लिए है और पूर्व 64-बिट संस्करण है।

  2. यदि आपके पास Java कई संस्करण अलग-अलग बैथन और रिलीज़ संस्करणों के साथ स्थापित हैं, जो कि कई ओपन सोर्स IDEs , प्रबंधकों, प्रशासनिक कंसोल के साथ होने वाला है, तो सबसे अच्छा विकल्प है VM तर्क सीधे eclipse.ini फ़ाइल में सेट करना। यदि आप नहीं करते हैं, ग्रहण पागल हो जाएगा और खुद को खोजने की कोशिश करेगा जो अच्छा नहीं है।


इस त्रुटि का अर्थ है कि ग्रहण का आर्किटेक्चर जावा रनटाइम के आर्किटेक्चर से मेल नहीं खाता है, यानी यदि कोई 32-बिट है तो दूसरा एक जैसा होना चाहिए, न कि 64-बिट।

सबसे विश्वसनीय फिक्स eclipse.ini में JVM स्थान निर्दिष्ट करना है:

-vm
C:\Program Files (x86)\Java\jdk1.7.0_55\bin\javaw.exe

महत्वपूर्ण: ये दो पंक्तियां -मार्ग से पहले आनी चाहिए। उद्धरण का प्रयोग न करें; रिक्त स्थान की अनुमति है।


हां, बस सुनिश्चित करें कि ग्रहण और JDK आपके संस्करण 64-बिट दोनों हैं। बस यह सुनिश्चित करने के लिए कि सबकुछ सही है, जेडीके को अनइंस्टॉल किया गया है और इसे प्रोग्राम फ़ाइलों में इंस्टॉल करें और प्रोग्राम फ़ाइलों (x86) में नहीं । कम से कम मेरी समस्या का समाधान किया।


निश्चित रूप से, आपको जेडीके और ग्रहण का एक संगत संस्करण होना चाहिए, लेकिन आपको निम्न पंक्तियों में eclipse.ini फ़ाइल में भी जोड़ने की आवश्यकता है:

-vm
yourdrive\java\bin

उन्हें अपनी eclipse.ini फ़ाइल की पहली दो पंक्तियां बनाएं।


जावा 6 से जावा 7 में अपग्रेड करने के बाद मेरे पास एक ही समस्या थी। मैंने जावा 6 (64 बिट) को हटा दिए और जावा 7 (64 बिट) को पुनः स्थापित किया, ग्रहण ने काम किया। :)


आपको सभी पुराने [जेआरई] [1] को अनइंस्टॉल करना चाहिए और फिर नवीनतम इंस्टॉल करना चाहिए ... मुझे एक ही समस्या थी और अब मैं इसे हल करता हूं। मैंने:

बेहतर जेरे 6 32 बिट स्थापित करें। यह सचमुच काम करता है।


एक और विकल्प है:

Eclipse.exe पर शॉर्टकट बनाएं। शॉर्टकट खोलें और लक्ष्य को इसमें बदलें:

"C:\Program Files\eclipse\eclipse.exe" -vm "c:\Program Files\Java\jdk1.7.0_04\bin\javaw.exe"

अपनी स्थापना के लिए, सुनिश्चित करें कि स्थान सही ग्रहण स्थापना निर्देशिका और सही javaw.exe स्थापना निर्देशिका को javaw.exe

(एक्लिप्स और जावा के 64/32 बिट संस्करणों को निश्चित रूप से वही होना चाहिए।)


सरल, मेरे पास 64-बिट ओएस, 32-बिट Eclipse और दोनों जेडीके 32 और 64 स्थापित हैं ... मैंने अभी 64-बिट जेडीके को अनइंस्टॉल किया है और ग्रहण ठीक काम कर रहा है ..


मेरे साथ भी यही हुआ। मेरे पास 64-बिट ग्रहण था, लेकिन मेरा जेडीके 32-बिट था। इसलिए मैंने 64-बिट संस्करण स्थापित किया और यह अभी ठीक है।


धन्यवाद misterfrb , मुझे एहसास हुआ कि ग्रहण इस त्रुटि को दे रहा था, क्योंकि मैंने अभी ओरेकल 10 जी डेवलपर सूट स्थापित किया था, और यह C:\DevSuiteHome_1 फ़ोल्डर में jvm.dll फ़ाइल की तलाश में था (मैंने फिर से C:\DevSuiteHome_1 इंस्टॉल करने का विकल्प चुना होगा डेवलपर सूट के साथ)।

पथ परिवर्तनीय से DevSuiteHome लाइनों को हटाने और 64-बिट jvm.dll लिए सुधार स्थान जोड़ने के jvm.dll (सुनिश्चित नहीं है कि यह आवश्यक था, बिना प्रयास नहीं किया गया), ग्रहण फिर से काम करता है, और डेवलपर सूट अभी भी करता है।


Eclipse.ini की शुरुआत में -vm पैरामीटर और उसके मान को 2 लाइनों पर जोड़ना महत्वपूर्ण है

-vm सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.7.0_45 \ bin \ javaw.exe


मुझे यकीन नहीं है कि क्यों मैंने अपने विंडोज़ \ system32 निर्देशिका के अंदर मेरी सी: \ विंडोज निर्देशिका और java.exe और javaw.exe में jre स्थापित किया था।

स्पष्ट रूप से इन निर्देशिकाओं को मेरी eclipse.ini फ़ाइल में -vm ध्वज जोड़ने के बाद भी प्राथमिकता प्राप्त हो रही थी।

यहां से उन्हें हटाएं मेरे लिए समस्या तय करें।


इसे हल करने के आसान तरीकों में से एक है jre फ़ोल्डर को jre को ग्रहण स्थापना फ़ोल्डर में स्थापित करने से कॉपी करना है। सुनिश्चित करें कि आपके द्वारा कॉपी की गई जेडीके एक ही वास्तुकला है जो आपके ग्रहण स्थापना के रूप में है।

मुझे अपनी मशीन को इस तरह से कॉन्फ़िगर करना पड़ा, क्योंकि मैं अपनी मशीन पर एक्लिप्स और एपसेलरेटर टाइटेनियम स्टूडियो दोनों चलाता हूं। स्टूडियो को 32-बिट जावा की आवश्यकता होती है, जबकि ग्रहण को 64-बिट की आवश्यकता होती है।


एक अनुपलब्ध jvm.dll फ़ाइल के लिए, हम jvm.dll फ़ाइल का पथ jvm.dll फ़ाइल में प्रदान कर सकते हैं

-vm
C:\Progra~1\Java\jdk1.6.0_38\jre\bin\server\jvm.dll

पथ और डबल कोट्स में किसी भी स्थान को हटाने के लिए यहां महत्वपूर्ण है। जब मैंने उद्धरण और स्थान हटा दिया तो यह मेरे लिए काम करता था।

मुझे उम्मीद है कि यह किसी की मदद करेगा।





jni