मुझे ग्रहण में त्रुटि हुई। इस त्रुटि संदेश का क्या अर्थ है:
प्रकार iglu.ir.TermVector को हल नहीं किया जा सकता है। यह अप्रत्यक्ष रूप से आवश्यक .class फ़ाइलों से संदर्भित है
मुझे ग्रहण में त्रुटि हुई। इस त्रुटि संदेश का क्या अर्थ है:
प्रकार iglu.ir.TermVector को हल नहीं किया जा सकता है। यह अप्रत्यक्ष रूप से आवश्यक .class फ़ाइलों से संदर्भित है
जवाबों:
इसका अर्थ है: "एक वर्ग जिसे आप उपयोग करते हैं, उसे एक अन्य वर्ग की आवश्यकता होती है जो वर्गपथ पर नहीं है।" आपको क्लास जार में आवश्यक जार जोड़ने के लिए सुनिश्चित करना चाहिए (जैसा कि हैरी जॉय सुझाव देता है)।
यह संभावित रूप से ग्रहण के भ्रमित होने की बात है क्योंकि यह एक वास्तविक त्रुटि है। मैंने उस त्रुटि को नजरअंदाज कर दिया और वेब सेवा को चलाया जिसकी एंडपॉइंटइंटरफेस ने इसके बारे में शिकायत की थी, और यह हर बार संवाद से निपटने के अलावा, मैं इसे चलाना चाहता था। बस एक और अपारदर्शी त्रुटि जो मुझे कुछ नहीं बताती है।
यह मेरे साथ कभी-कभी होता है, मैंने हमेशा यह तय किया है कि पुराने गुणों को साफ करने के लिए "mvan ग्रहण: स्वच्छ" कमांड के साथ और फिर mvan ग्रहण चलाएं: ग्रहण -वृत्पर्व = 2.0 (निश्चित रूप से वेब परियोजना के लिए)। कुछ पुराने गुणों को बचाया गया है इसलिए ग्रहण कभी-कभी भ्रमित होता है।
mvn eclipse:clean
और / या mvan eclipse:eclipse
यह काम करने के लिए जादू की चाल है।
दूषित मावेन भंडार के कारण मुझे यह त्रुटि हुई ।
इसलिए, समस्या को ठीक करने के लिए, मुझे बस इतना करना होगा कि मैं अपने रिपॉजिटरी में जाऊं और उस फ़ोल्डर को हटा दूं जहां संबंधित .jar था, फिर update maven
एक्लिप्स में बाध्य करें ।
ऐसा लगता है कि यह एक ज्ञात मुद्दा है (बग 67414) जिसे 3.0 में हल किया गया था ... किसी ने टिप्पणी की है कि यह 3.4 में भी उनके लिए हो रहा है।
इस बीच, आसपास का काम परियोजना से जेआरई सिस्टम लाइब्रेरी को हटाने और फिर इसे वापस जोड़ना है।
Here are the steps:
बिल्ड त्रुटि वाले प्रोजेक्ट के गुणों पर जाएं (राइट क्लिक> गुण)
"बिल्ड पथ" अनुभाग में "लाइब्रेरीज़" टैब देखें
सूची में "JRE सिस्टम लाइब्रेरी" ढूंढें (यदि यह गायब है तो यह त्रुटि संदेश ग्रहण बग नहीं बल्कि गलत कॉन्फ़िगर किया गया प्रोजेक्ट है)
"JRE सिस्टम लाइब्रेरी" निकालें
"लाइब्रेरी जोड़ें ..." को हिट करें, "JRE सिस्टम लाइब्रेरी" चुनें और प्रोजेक्ट के लिए उपयुक्त JRE जोड़ें (जैसे। 'कार्यक्षेत्र डिफ़ॉल्ट RRE')
लाइब्रेरी चयन में "समाप्त" और प्रोजेक्ट गुणों में "ओके" मारो और फिर प्रोजेक्ट के फिर से निर्माण की प्रतीक्षा करें
उम्मीद है कि त्रुटि का समाधान हो जाएगा ...
यह त्रुटि तब होती है जब जार फ़ाइल में कक्षाएं जार की फ़ोल्डर संरचना के समान संरचना का पालन नहीं करती हैं।
उदाहरण के लिए यदि आपके पास वर्ग फ़ाइल में पैकेज com.test.exam है और इस वर्ग फ़ाइल के बाहर बनाए गए classes.jar में संरचना परीक्षण है ।exam ... त्रुटि डाली जाएगी। आपको अपनी classes.jar के पैकेज स्ट्रक्चर को सही करना होगा और फिर इसे एक्लिप्स बिल्ड पथ में शामिल करना होगा ...
मुझे यह अपवाद मिला क्योंकि ग्रहण jdk के एक अलग संस्करण में काम कर रहा था, बस सही, साफ और निर्माण में बदल गया और काम किया!
मुझे इस समस्या का एक दिलचस्प मामला ग्रहण के साथ 4.4.2 था। मेरी परियोजना (P1) ने एक बाहरी वर्ग (प्रोजेक्ट P2) को एक ही नाम से दो विधियों के साथ संदर्भित किया लेकिन अलग-अलग तर्क प्रकार:
public static void setItem(Integer id) …
public static void setItem(Item item) …
प्रकार Item
एक तीसरी परियोजना पी 3 में निहित था, जिसे मैं यहां दिखाई नहीं देना चाहता था। P1 को केवल पहली विधि कहा जाता है:
ExternalClass.setItem(Integer.valueOf(12345));
तो दूसरी विधि, जिसका उपयोग किया Item
कक्षा का उपयोग किया था, का उपयोग नहीं किया गया था, और यह सच है कि पी 3 संकलन क्लासपाथ में नहीं था - अगर इसका उपयोग नहीं किया जाता है तो क्यों करना चाहिए।
फिर भी ग्रहण ने मुझे बताया
The type ...Item cannot be resolved.
It is indirectly referenced from required .class files
कमांड लाइन से संकलित करने से ऐसे किसी भी मुद्दे का उत्पादन नहीं हुआ। दूसरी विधि का नाम बदलना (यहां अप्रयुक्त!) ने ग्रहण में समस्या को दूर कर दिया, भी।
मेरे लिए यह तय था right clicking on project > Maven > Update Project
मेरे लिए, यह तब होता है जब मैं अपने jdk को 1.8.0_60 पर अपग्रेड करता हूं, जब कि मेरे पुराने सेट का उपयोग लंबे समय से किया जाता है। अगर मैं वापस jdk1.7.0_25 पर आता हूं, तो ये सभी समस्याएँ दूर हो जाती हैं। यह JRE और पुस्तकालयों के बीच संगतता के बारे में एक समस्या लगती है।
मुझे त्रुटि तब मिली जब मैं सिर्फ कुछ svn सेटिंग्स बदल रहा था और कोड में कुछ भी नहीं। बस परियोजनाओं की सफाई में त्रुटि तय हुई।
मेरे मामले में, मैंने एक प्रोजेक्ट बनाया minSdkVersion=9
और उसका और बनाया targetSdkVersion=17
। मैंने स्वचालित रूप से उत्पन्न किया libs/android-support-v4.jar
। मुझे भी इस्तेमाल करने की ActionBarActivity
आदत डालनी थी android-support-v7-appcomapt.jar
। इसलिए मैंने बस android-support-v7-appcompat.jar
फ़ाइल को android-sdk/extras/andrid/support/v7/appcompat/libs
फ़ोल्डर से कॉपी किया और अपने प्रोजेक्ट libs
फ़ोल्डर में पेस्ट किया । और इससे उपरोक्त त्रुटि हुई। इसलिए मूल रूप से, मुझे अपने प्रोजेक्ट फ़ोल्डर android-support-v4.jar
से फ़ाइल डालने की आवश्यकता थी । मेरे ज्ञान के अनुसार फ़ाइल में फ़ाइल पर निर्भरता थी । इसलिए, इसे अपनी परियोजना की आवश्यकता थी, मेरे प्रोजेक्ट के बजाय, स्वचालित रूप से बनाई गई फ़ाइल।android-sdk/extras/andrid/support/v7/appcompat/libs
libs
v7.jar
v4.jar
v4.jar
v4.jar
जल्दी और बस मैंने इसे इस तरह से तय किया (मैं ADT संस्करण का उपयोग करता हूं: v21.0.0-531062 विंडोज एक्सपी होम संस्करण पर)
यह काम किया लेकिन समस्या हर कुछ दिनों में लौट आती है। मैं ऊपर जैसा ही करता हूं और यह मुझे हल करता है और मुझे विकसित होने देता है।
क्लास फ़ाइल गुम होने के पहले से सुझाए गए कारण के अलावा, यह त्रुटि डुप्लिकेट क्लास फ़ाइल का संकेत भी दे सकती है, इस त्रुटि की रिपोर्ट तब करती है जब बिल्ड पथ पर कोई क्लास फ़ाइल किसी अन्य वर्ग का उपयोग करती है जिसमें बिल्ड पथ में एकाधिक परिभाषाएँ होती हैं।
चूँकि आप हमें बहुत कम जानकारी देते हैं, सबसे अधिक संभावना है कि आपने क्या किया, जो कि बनाने के लिए एक अविश्वसनीय रूप से आसान गलती है, जो कि शीर्षक के बजाय है
Build Path > Configure Build Path > Projects
और वहां से अपने अतिरिक्त प्रोजेक्ट फ़ोल्डर को जोड़ने के बजाय, आप गए
Build Path > Configure Build Path > Libraries
और इसके बजाय अपने प्रोजेक्ट फ़ोल्डर को वहां से जोड़ा।
यह निश्चित रूप से मामला है यदि आपका कोड सब ठीक है, लेकिन स्वचालित रूप से आयात को पुन: व्यवस्थित करने पर ctrl+space
com.your.additionalproject के संदर्भ में आपके आयात विवरणों के बजाय शॉर्टकट के करने पर, आपके संदर्भ सभी bin.com.your.additionalproject को इंगित करते हैं।
बिन नोट करें। मतलब यह है कि आप-अप्रत्यक्ष रूप से अपनी कक्षा को अपनी अन्य परियोजना फ़ोल्डर संरचना को लाइब्रेरी के रूप में मानकर अपनी कक्षा का उल्लेख कर रहे हैं, जिससे आपका आईडीई ठीक उसी बाइनरी क्लास को खोजने का काम कर रहा है जिसे आप संदर्भित कर रहे हैं।
इसे ठीक करने के लिए, पुस्तकालयों से फ़ोल्डर को हटा दें, और इसके बजाय इसे प्रोजेक्ट टैब के तहत जोड़ें, और अपने आयातों को पुनर्गठित करें। आपका प्रोजेक्ट ठीक काम करना चाहिए।
जब मैं एक नए ग्रहण संस्करण का उपयोग करता हूं और पिछले कार्यक्षेत्र का उपयोग करने का प्रयास करता हूं, जिसका उपयोग मैंने पुराने ग्रहण संस्करण के साथ किया था, तो यह त्रुटि उत्पन्न हुई।
यहां बताया गया है कि मैं इस समस्या को कैसे हल करता हूं:
पैकेज एक्सप्लोरर पर मेरी परियोजना पर राइट क्लिक करें -> गुण -> जावा बिल्ड पथ -> पुस्तकालय -> मुझे JRE सिस्टम लाइब्रेरी पर एक त्रुटि (क्रॉस साइन) दिखाई देती है। क्योंकि रास्ता नहीं मिल सकता है। -> JRE सिस्टम लाइब्रेरी पर डबल क्लिक करें -> "कार्यक्षेत्र डिफ़ॉल्ट JRE" विकल्प चुनें -> समाप्त -> ठीक है। -> BUM IT काम कर रहा है
FYI करें।
मेरे मामले में यह मेरी pom.xml
फ़ाइल में एक नई निर्भरता जोड़ने का परिणाम था ।
नई निर्भरता एक पुस्तकालय (2.5) के पुराने संस्करण पर निर्भर करती थी। उसी पुस्तकालय को मेरे द्वारा दूसरे पुस्तकालय की आवश्यकता थीpom.xml
, लेकिन उसे संस्करण 3.0 की आवश्यकता थी।
किसी कारण से, जब मावेन का सामना इन संघर्षों से होता है, तो यह सबसे हालिया संस्करण को छोड़ देता है। ग्रहण में जब pom.xml
आप देखते हैं कि नीचे निर्भरता हल करने के लिए "निर्भरता पदानुक्रम" टैब का चयन कर सकते हैं। यहां आप पाएंगे कि क्या पुस्तकालय (और इस प्रकार वर्ग) को इस कारण से छोड़ दिया गया है।
मेरे मामले में यह नए संस्करण को बंद करने जैसा सरल था। आप प्रविष्टि को राइट-क्लिक करके ऐसा कर सकते हैं - इसे संदर्भ मेनू में बंद करने का विकल्प है।
JRE को बिल्ड पथ में JDK पर इंगित करें। मेरे लिए यही काम किया।