2013-02-08 52 views
30

मैं एक libGDX प्रोजेक्ट पर काम कर रहा हूं और मेरे पास चेयरव्राइकिड्स नामक एक कक्षा है जिसमें एक अन्य इनलाइन क्लास है जो एक ईवेंट श्रोता है। जब मैं डेस्कटॉप पर इस प्रोजेक्ट को चलाता हूं तो यह ठीक काम करता है। लेकिन जब मैं अपने Android डिवाइस पर चलाने के लिए, यह है कि इनलाइन वर्ग नहीं मिल रहा है और मैं निम्नलिखित त्रुटि मिलती है:विधि XXX से संदर्भित क्लास XXX नहीं मिला। <YYY>

Could not find class 'com.bbj.cva.CheerVArachnids$PlaceUnitListener', referenced from method com.bbj.cva.CheerVArachnids.<init> 

मेरी कक्षा के महत्वपूर्ण भागों यहाँ हैं:

package com.bbj.cva; 

public class CheerVArachnids implements ApplicationListener { 

    class PlaceUnitListener implements EventSubscriber<PlaceUnitEvent> { 

     @Override 
     public void onEvent(PlaceUnitEvent event) 
     { 
      // 
     } 
    } 

    public CheerVArachnids() { 

     EventBus.subscribe(PlaceUnitEvent.class, new PlaceUnitListener()); 
     EventBus.subscribe(RemoveScreenObjectEvent.class, 
       new RemoveScreenObjectListener()); 
    } 
} 

कोई भी विचार क्यों एंड्रॉइड पर, रनटाइम पर यह इनलाइन क्लास नहीं ढूंढ सकता है?

+0

शेष अपवाद संदेश क्या है? मुझे संदेह है कि यह वास्तव में PlaceUnitListener के सुपरक्लास के साथ एक समस्या है (और उसके बाद CodeNoob का उत्तर लागू होगा)। "EventSubscriber <>" क्या है? –

उत्तर

46

कुछ एडीटी-संस्करण के बाद से आपको यह निर्धारित करना होगा कि कौन से पुस्तकालय/परियोजनाओं को निर्यात किया जाना चाहिए।

प्रोजेक्ट-प्रोपेरेट्स -> जावा बिल्ड पथ -> ऑर्डर और एक्सपोर्ट -> अपने स्रोतों और अन्य पुस्तकालयों का उपयोग करें जिन्हें आप उपयोग कर रहे हैं।

अपने कोर- और एंड्रॉइड-प्रोजेक्ट के लिए इन निर्यात-सेटिंग्स करें।

फिर इसे एंड्रॉइड पर ठीक काम करना चाहिए।

+0

यह समझ में आएगा कि यह बाहरी पुस्तकालय था, लेकिन यह एक कक्षा है जिसे सही इनलाइन परिभाषित किया गया है। तो कोई बाहरी परियोजना निर्भरता नहीं है। देखें कि PlaceUnitListener को कन्स्ट्रक्टर के ऊपर कैसे घोषित किया गया है। –

+1

मुझे ये त्रुटियां अक्सर होती थीं, और संदेश अक्सर गलत होता है। यहां यह था कि, यह इंटरफ़ेस/कक्षा को कार्यान्वित नहीं किया जा सकता था, जिसे मैं सही समझा सकता हूं, लेकिन, आप EventSubscriber कहां से प्राप्त करते हैं? यह एक बाहरी पुस्तकालय से सही है? – CodeNoob

+1

आप सही हैं। वह यह था। धन्यवाद CodeNoob। –

12

मेरे मामले में, सबकुछ ठीक काम करता है जब तक कि मैंने एसडीके और ग्रहण के लिए नए अपडेट इंस्टॉल नहीं किए।

मैं एक त्रुटि मिली: "वर्ग नहीं मिल सका ..."

मैं एक और stackoverflow साइट में समाधान मिल गया।

I have a similar problem when using external jar (in my case openCSV). The reason I had a problem was due to a change in ADT 17 (or above). What I needed to do to resolve the problem was In Eclipse go to Properties -> Java build path -> Order and export. Mark my jar. Move jar to top of the list. The solution was found in the following page which reference to a very good article.

+7

यह केवल तभी काम करता है जब मैं जार को सूची के शीर्ष पर ले जाता हूं। बहुत बहुत धन्यवाद @syp_dino! – UmbySlipKnot

+0

@UmbySlipKnot: आपका स्वागत है। –

0

सबसे पहले आपको: आयात XXX (कक्षा) जावा, आप बाहरी पुस्तकालय जार फ़ाइल उदारीकरण फ़ोल्डर में उन्हें आयात जोड़ा है। उसके बाद: अपने प्रोजेक्ट पर राइट क्लिक करें -> गुण -> जावा बिल्ड पथ -> ऑर्डर और एक्सपोर्ट (टैब) -> सभी का चयन करें -> ठीक दबाएं -> अपनी परियोजना को साफ करें।

आशा है कि यह इस समस्या को हल करे