由于“java.lang.IllegalAccessError”,检测仪运行失败

我正在为Android项目编写testing,只是不明白为什么这样的痛苦! 经过一整天的设置,我终于可以工作了,但是现在,在我写了几个Intellij IDEA的testing课之后,

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' 

几分钟前我正在运行的testing不能再运行了。 考虑到我回滚到我最近的承诺,一切都很理想,我没有改变任何设置,我只是想知道为什么。

这是什么logcat说:

 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行:130它只是指:

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

Solutions Collecting From Web of "由于“java.lang.IllegalAccessError”,检测仪运行失败"

我终于find了一个解决scheme。 问题是确实存在依赖关系,它仍然不知道为什么它曾经工作,然后突然拒绝,但这里是testing模块的依赖关系:

在这里输入图像说明

因此,总而言之,您需要确保您的testing模块中列出了所有的库和项目库,并标记为“已提供”,但是“编译”的Robotium lib除外。

就我而言,这是由于包括重复的jar子。

基于你的其他问题 …我想我有一些类似的设置,你…这几乎是如何设置我的依赖(读取子项作为依赖项)

  • ActionBarSherlock
    • Android的支持-V4
  • Android模块
    • ActionBarSherlock
    • Android的支持-V4
  • unit testing
    • robotium
    • Android模块

所有的依赖都设置为“编译”

我从源代码使用ActionBarSherlock,该模块有“是一个库项目”检查。

我刚刚遇到同样的问题,因为它解决了这个问题。

从您的testing项目中删除android-support-v4 lib(或者任何为此而加倍的lib)。 清理项目并重新构build。

添加以下行:

 manifestmerger.enabled=true 

到您的应用程序项目的project.properties文件。

为我做的修复:)有一个项目与图书馆项目