我正在尝试使用Android
为Robotium
项目运行我的UI测试,但每当我尝试从命令行或Eclipse运行它时,它都会给我这个错误:
INSTRUMENTATION_RESULT: longMsg=java.lang.IllegalAccessError:
Class ref in pre-verified class resolved to unexpected implementation
在logcat中它还给出了一个错误:
java.lang.NoClassDefFoundError: com.bridgepointeducation.talon.TalonModule
即使我没有com.bridgepointeducation.talon.TalonModule
。
有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:7)
当提供相同类/ jar的两个副本时,我已经看到了这个问题。例如,如果您依赖于Android项目和测试项目中的第三方库,由于某种原因它会被包含两次。
这取决于您如何构建/运行测试以确定如何解决此问题。从eclipse你可以导出android项目中的违规库,它将被放在测试项目的类路径上。在maven中,您可以将其标记为提供的范围。在ant中,我相信你不会在测试项目中本地包含它(在libs或其他方面),它会从android项目类路径中提取出来。
答案 1 :(得分:1)
我在仪器仪表中遇到了类似的问题,我得到了错误 预验证类中的类ref解析为意外实现
在挣扎之后,我可以解决问题。问题发生的原因是android-support-v4.jar。这个jar默认是在android项目的lib文件夹中创建的。添加到lib文件夹的jar文件在编译时使用,也用于检测项目的运行时。当我运行检测时,目标应用程序开始使用捆绑在检测项目中的android-support-v4.jar而不是自己的android-support-v4.jar。这会在运行时导致预先验证的类异常(因为版本会有所不同)。
为了解决这个问题,我将android-support-v4.jar移出lib文件夹并将其放在另一个文件夹(比如libforcompile)中并将其添加为外部Jar(项目属性 - > Java BUild Path - &gt ;库 - >单击Add External Jars)。
我的仪器项目编译得很好,当它运行时它使用了目标应用程序本身的android-support-v4.jar
没有更多错误..
我希望它有所帮助
此致 Indraneel
答案 2 :(得分:0)
听起来它试图运行测试的实现类并不是它所期望的。运行测试时,必须指定测试包和包来运行测试。
您确定运行测试的程序包与类路径中包含的程序包相同吗?也许测试是针对过时的版本运行的?
此外,如果您的项目包含任何其他库(.jars),则必须确保它们也包含在测试的类路径中。
编辑:环顾四周我发现了类似的问题和解决方案: Can't build and run an android test project created using "ant create test-project" when tested project has jars in libs directory您必须更改build.xml文件以覆盖某些默认的android目标才能包含第三方库(.jars)