2013-02-12 10 views
15

के कारण विफल रहा है, मैं अभी एंड्रॉइड प्रोजेक्ट के लिए परीक्षण लिख रहा हूं और यह समझ में नहीं आता कि यह दर्द क्यों है! सेटअप के एक पूरे दिन के बाद मैं अंत में, यह काम मिलता है, लेकिन अब के बाद मैं कई परीक्षण कक्षाओं IntelliJ विचार खड़ा लिखा है:इंस्ट्रुमेंटेशन रन 'java.lang.IllegalAccessError'

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.IllegalAccessError''. Check device logcat for details 
Test running failed: Instrumentation run failed due to 'java.lang.IllegalAccessError' 

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

02-12 20:16:09.398: E/AndroidRuntime(4922): FATAL EXCEPTION: main 
02-12 20:16:09.398: E/AndroidRuntime(4922): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.view.MenuInflater$MenuState.readItem(MenuInflater.java:327) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:147) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:97) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at <package>.ui.CheckPasswordActivity.onCreateOptionsMenu(CheckPasswordActivity.java:130) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.support.v4.app._ActionBarSherlockTrojanHorse.onCreatePanelMenu(_ActionBarSherlockTrojanHorse.java:45) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:556) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:60) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:154) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:407) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:769) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:201) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer.doFrame(Choreographer.java:531) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.os.Handler.handleCallback(Handler.java:725) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.os.Handler.dispatchMessage(Handler.java:92) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.os.Looper.loop(Looper.java:137) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at dalvik.system.NativeStart.main(Native Method) 

हालांकि मैं भी इस वर्ग, CheckPasswordActivity लाइन छुआ नहीं था:

यहाँ logcat क्या कह रहा है है 130 यह दर्शाता है बस है:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu_check_password, menu); 
     return true; 
    } 
+0

समर्थन लाइब्रेरी के साथ कुछ निर्भरता समस्या की तरह लगता है। अपनी टेस्ट मॉड्यूल सेटिंग्स (आईडीईए में एफ 4) की निर्भरताओं में जांच करें कि समर्थन लाइब्रेरी और एक्शनबैरशॉक दोनों 'प्रदत्त' स्कोप्स –

+0

के साथ हैं, क्या आप मुझे और बता सकते हैं? मेरे पास abs, मॉड्यूल है जहां मेरे स्रोत हैं, पुस्तकालय और परीक्षण मॉड्यूल का समर्थन करें जहां मेरे परीक्षण हैं। इन निर्भरताओं को कैसा दिखना चाहिए? – Eugene

+0

मॉड्यूल सेटिंग्स में सुनिश्चित करें कि स्कॉप्स पेट और समर्थन लाइब्रेरी –

उत्तर

23

मुझे अंततः एक समाधान मिला है। समस्या वास्तव में निर्भरता के साथ था, यह कारण है कि यह काम करता था और फिर अचानक से इनकार कर दिया अभी भी अज्ञात है, लेकिन यहाँ निर्भरता अपने परीक्षण मॉड्यूल के लिए की तरह दिखना चाहिए कैसे: आप सभी की जरूरत में

enter image description here

तो सब यह सुनिश्चित करने के लिए कि आपके सभी पुस्तकालयों और परियोजना पुस्तकालयों को आपके परीक्षण मॉड्यूल के लिए सूचीबद्ध किया गया है और रोबोटियम लिब को छोड़कर "प्रदान किया गया" के रूप में चिह्नित किया गया है, जो "संकलन" है।

+0

यह मेरे लिए काम किया। मेरे मामले में, मुझे मॉकिटो पुस्तकालयों पर निर्भरता भी थी। मैंने अनिवार्य रूप से उन सभी पुस्तकालयों को छोड़कर "प्रदान की गई" के रूप में सभी निर्भरताओं को चिह्नित किया है, जिन पर मेरी परीक्षा परियोजना सीधे निर्भर थी। उनको "संकलन" के रूप में चिह्नित किया गया था। –

1

पर your other question आधार पर। .. मुझे लगता है कि मेरे पास कुछ समान सेटअप है ... यहां बहुत निर्भरता है कि मेरी निर्भरताएं कैसे सेट की जाती हैं (उप-वस्तुओं को निर्भरता के रूप में पढ़ें)

  • ActionBarSherlock
    • android-समर्थन-v4
  • एंड्रॉयड मॉड्यूल
    • ActionBarSherlock
    • android-समर्थन-v4
  • यूनिट टेस्ट
    • robotium
    • एंड्रॉयड मॉड्यूल

सभी निर्भरता के रूप में सभी सेटअप "संकलन"

मैं स्रोत कोड से ActionBarSherlock का उपयोग करें और है कि मॉड्यूल है कर रहे हैं जाँच की "लाइब्रेरी परियोजना है"।

+0

मेरे पास समान निर्भरताएं हैं, उन्हें दोबारा जांचें, मदद नहीं की - मैं अभी भी अज्ञात कारणों से अपने कुछ परीक्षण नहीं चला सकता। – Eugene

0

मुझे समस्या का समाधान करने के बाद ही वही समस्या करने का प्रयास किया गया था।

अपने परीक्षण प्रोजेक्ट से एंड्रॉइड-समर्थन-v4 lib निकालें (या उस मामले के लिए दोगुनी कोई भी lib)। स्वच्छ परियोजनाएं और इसे फिर से बनाएं।अपने आवेदन परियोजना के अपने project.properties फाइल करने के लिए

manifestmerger.enabled=true 

:

0

निम्न पंक्ति जोड़ें।

मेरे लिए ठीक किया :) एक लाइब्रेरी प्रोजेक्ट

+0

आप इस लाइन को कहां जोड़ते हैं? Eclipse प्रोजेक्ट की प्रोजेक्ट.प्रोपर्टीज फ़ाइल में –

+0

(ui test projecT) – cV2

2

मेरे मामले में के साथ एक परियोजना था, यह कारण डुप्लिकेट जार शामिल किया जा रहा है।

संबंधित मुद्दे