仪表运行失败,原因是“java.lang.IllegalAccessError” [英] Instrumentation run failed due to 'java.lang.IllegalAccessError'

查看:897
本文介绍了仪表运行失败,原因是“java.lang.IllegalAccessError”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在写测试Android项目,现在,只是不明白这是为什么这么痛!设置了一整天之后,我终于得到它的工作,但现在,当我写了几个测试类的IntelliJ IDEA表示:

 测试未能完成运行。原因是:规范运行失败,原因是java.lang.IllegalAccessError'。检查设备logcat的详细信息
试运行失败:仪器仪表运行失败,原因是java.lang.IllegalAccessError
 

我跑只是一,两分钟前的测试不能再运行。考虑到我回滚到我的最新承诺,一切是理想的,我并没有改变我只是想知道的任何设置的原因。

下面是logcat的是说:

  02-12 20:16:09.398:E / AndroidRuntime(4922):致命异常:主要
02-12 20:16:09.398:E / AndroidRuntime(4922):java.lang.IllegalAccessError:类文献在pre-核实级解决意外的执行
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.actionbarsherlock.view.MenuInflater $ MenuState.readItem(MenuInflater.java:327)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:147)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:97)
02-12 20:16:09.398:E / AndroidRuntime(4922):AT<包装> .ui.CheckPasswordActivity.onCreateOptionsMenu(CheckPasswordActivity.java:130)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.support.v4.app._ActionBarSherlockTrojanHorse.onCreatePanelMenu(_ActionBarSherlockTrojanHorse.java:45)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:556)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:60)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:154)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.android.internal.policy.impl.PhoneWindow preparePanel(PhoneWindow.java:407)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:769)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.android.internal.policy.impl.PhoneWindow $ 1.运行(PhoneWindow.java:201)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.view.Choreographer.doCallbacks(Choreographer.java:562)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.view.Choreographer.doFrame(Choreographer.java:531)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.os.Handler.handleCallback(Handler.java:725)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.os.Handler.dispatchMessage(Handler.java:92)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.os.Looper.loop(Looper.java:137)
02-12 20:16:09.398:E / AndroidRuntime(4922):在android.app.ActivityThread.main(ActivityThread.java:5039)
02-12 20:16:09.398:E / AndroidRuntime(4922):在java.lang.reflect.Method.invokeNative(本机方法)
02-12 20:16:09.398:E / AndroidRuntime(4922):在java.lang.reflect.Method.invoke(Method.java:511)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
02-12 20:16:09.398:E / AndroidRuntime(4922):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-12 20:16:09.398:E / AndroidRuntime(4922):在dalvik.system.NativeStart.main(本机方法)
 

虽然我甚至没接触过这个班,CheckPasswordActivity线:130它指的仅仅是:

  @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        MenuInflater充气= getSupportMenuInflater();
        inflater.inflate(R.menu.menu_check_password,菜单);
        返回true;
    }
 

解决方案

我终于找到了解决办法。问题是有依赖性的确,仍是一个未知数,为什么它曾经工作,然后突然拒绝了,但这里是依赖关系应该是什么样子你的测试模块:

所以,这一切的一切,你需要确保所有的库和项目库中列出的测试模块,并标记为提供除了Robotium lib中,这是编译。

I'm writing tests for Android project right now and just don't understand why is this such a pain! After a whole day of setup I finally get it work, but now, after I have written several test classes Intellij IDEA stands:

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'

The tests I was running just a couple of minutes ago can't be run anymore. Taking into account I rolled back to my latest commit where everything was ideal and I wasn't changing any settings I'm just wondering why.

Here is what logcat is saying:

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)

Although I didn't even touched this class, the CheckPasswordActivity line:130 it refers to is just:

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

解决方案

I have finally found a solution. The problem was with dependencies indeed, it is still unknown why it used to work and then suddenly refused, but here is how the dependencies should look like for your test module:

So all in all you need to make sure all your libraries and project libraries are listed for your test module and marked as "Provided" except Robotium lib, which is "Compile".

这篇关于仪表运行失败,原因是“java.lang.IllegalAccessError”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆