2

我正在尝试使用 运行我的Android项目的 UI 测试Robotium,但是每当我尝试从命令行或 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.

有谁知道如何解决这个问题?谢谢!

4

3 回答 3

7

I've seen this problem when there are two copies of the same class/jar provided. For instance if you depend on a third party library in both your android project and the test project, for some reason it gets included twice.

It depends how you build/run your tests to determine how to fix this. From eclipse you can export the offending library in the android project, and it'll get put on the classpath of the test project. In maven, you can mark it as provided scope. In ant, I believe you'd just not include it locally in the test project (in libs or otherwise) and it'd get pulled from the android project classpath.

于 2011-08-09T21:05:59.313 回答
1

我在检测过程中遇到了类似的问题,我在预验证类中遇到错误 Class ref resolve to unexpected implementation

经过斗争日志,我可以解决问题。问题是由于 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 路径-> 库->单击添加外部罐子)。

因此,我的仪器项目编译得很好,并且在运行时使用了目标应用程序本身的 android-support-v4.jar

没有更多的错误..

我希望它有帮助

问候 Indraneel

于 2014-12-05T04:53:57.413 回答
0

听起来它试图运行测试的实现类不是它所期望的。运行测试时,您必须指定测试包和运行测试的包。

您确定它运行测试的包与类路径中包含的包相同吗?也许测试是针对过时的版本运行的?

此外,如果您的项目包含任何其他库 (.jar),您必须确保它们也包含在测试的类路径中。

编辑:环顾四周,我在这里发现了一个类似的问题和解决方案: Can't build and run an android test project created using "ant create test-project" when testing project has jars in libs directory

您必须更改 build.xml 文件以覆盖一些默认的 android 目标,以便包含 3rd 方库 (.jars)

于 2011-08-09T14:45:02.930 回答