Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 由于';java.lang.IllegalAccessError';_Android_Testing_Intellij Idea - Fatal编程技术网

Android 由于';java.lang.IllegalAccessError';

Android 由于';java.lang.IllegalAccessError';,android,testing,intellij-idea,Android,Testing,Intellij Idea,我现在正在为Android项目编写测试,只是不明白为什么这么痛苦!经过一整天的设置,我终于让它工作了,但现在,在我编写了几个测试类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

我现在正在为Android项目编写测试,只是不明白为什么这么痛苦!经过一整天的设置,我终于让它工作了,但现在,在我编写了几个测试类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'
几分钟前我正在运行的测试不能再运行了。考虑到我回到了我的最新承诺,在那里一切都很理想,我没有改变任何设置,我只是想知道为什么

以下是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)
基于。。。我想我有点像你一样的设置。。。下面是我的依赖项的设置方式(将子项作为依赖项读取)

  • ActionBarSherlock
    • android-support-v4
  • 安卓模块
    • ActionBarSherlock
    • android-support-v4
  • 单元测试
    • 机器人
    • 安卓模块
所有依赖项都设置为“编译”


我使用源代码中的ActionBarSherlock,该模块已选中“是一个库项目”。

我终于找到了解决方案。问题在于依赖关系确实如此,我们仍然不知道它为什么会工作,然后突然被拒绝,但下面是测试模块的依赖关系的样子:


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

我刚刚遇到了同样的问题,请尝试执行以下操作,以解决问题


从您的测试项目中删除android-support-v4库(或为此而加倍的任何库)。清理项目并重新构建它。

添加以下行:

manifestmerger.enabled=true 
到应用程序项目的project.properties文件

为我做了修复:)
有一个项目有一个库项目

在我的例子中,这是因为包含了重复的jar。

听起来像是支持库的一些依赖性问题。检查您的测试模块设置(IDEA中的F4)的依赖项,即支持库和ActionBarSherlock都具有“提供的”作用域扫描您能告诉我更多信息吗?我有abs,我的源代码所在的模块,我的测试所在的支持库和测试模块。这些依赖项应该是什么样子的?在模块设置中,确保为abs和支持库提供了作用域。我有相同的依赖项,仔细检查了它们,没有帮助-由于未知原因,我仍然无法运行一些测试。这对我有效。在我的例子中,我还依赖Mockito库。基本上,我将所有依赖项都标记为“已提供”,但我的测试项目直接依赖的库除外。在eclipse项目(ui测试项目)的project.properties文件中,这些代码被标记为“Compile”。您在哪里添加这一行
manifestmerger.enabled=true