android仪器测试:IllegaAccessError
我在运行Android工具测试时收到了IllegaAccessError。android仪器测试:IllegaAccessError,android,maven,instrumentation,buildpath,Android,Maven,Instrumentation,Buildpath,我在运行Android工具测试时收到了IllegaAccessError。 这是Logcat输出: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 这是我的设置: TestProjectTestProject下测试TestProject,它在构建路径(在“项目”选项卡中)中包含另一个项目,并从“订单和导出”选项卡导出。被测试的类属于另一个项目
这是Logcat输出:
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
这是我的设置:
TestProject
TestProject下测试TestProject
,它在构建路径(在“项目”选项卡中)中包含另一个项目,并从“订单和导出”选项卡导出。被测试的类属于另一个项目
我按照这里的建议配置构建路径
构建是从命令行使用Maven完成的另一个项目
作为依赖项,位于TestProject
和下TestProject
的pom文件中。这就是仍然出现错误的原因吗?我怎样才能解决这个问题?仅针对测试项目下的项目在pom中包含另一个项目
,并在测试项目的pom中包含测试项目下的项目
eclipse的构建路径如何与maven的pom相结合
我不清楚这一点,任何帮助都将不胜感激
谢谢
我尝试了以下方法,但仍然遇到问题:
从TestProject
的pom中删除了另一个项目李>
遵循关于我的的建议,如果我为另一个项目添加提供的,则测试项目甚至不会生成
我被困在这一点上,请让我知道,如果你有出路
谢谢 首先,遵循android maven插件wiki页面上的库部分:
如果您的项目设置中包含库,则也需要按规定添加这些库,否则它们将被添加到测试中,这将导致重复错误«预验证类中的类引用已解析为意外实现»
注意Bug#142,此时只有带有jar的库才能工作
然后右键单击测试项目,单击构建路径->配置构建路径,勾选订单和导出选项卡中的Maven Dependencies:
这对我有效,希望能有所帮助。我也有同样的问题。为了解决这个问题,我必须将主应用程序的pom.xml中的库依赖项添加到测试应用程序的pom.xml中,但将提供的添加到它们中
因此,如果我在MyApp pom.xml中有以下依赖项:
com.nineolandroid
图书馆
2.4.0
我必须将此添加到MyAppTest pom.xml中:
com.nineolandroid
图书馆
2.4.0
假如
您没有指定这是一个仅限Eclipse的问题,还是项目也无法使用Maven构建(使用android Maven插件
)。就我而言,两者都会失败。原因是:TestProject.apk
下的的可传递依赖项也会进入TestProject.apk
中,从而导致预验证
类问题。我的解决方案是在我的TestProject
的pom中应用这一点:
<dependency>
<groupId>com.example</groupId>
<artifactId>UnderTestProject</artifactId>
<version>1.0-SNAPSHOT</version>
<type>apk</type>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
com.example
,将产生一个警告,但工作做得很漂亮(在Maven 3.1.1
上测试)。谢谢您的回答!我现在已经搬到了Robolectric,并且已经开始运行测试。然而,我必须进行仪器测试,一旦我再次接触仪器,我将对此进行验证。在那之前我接受你的回答。
<dependency>
<groupId>com.nineoldandroids</groupId>
<artifactId>library</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>UnderTestProject</artifactId>
<version>1.0-SNAPSHOT</version>
<type>apk</type>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>