31

我已经使用第三方库(zxing)在实现项目运行良好之后使用第三方库(zxing)实现了项目,然后在我编写了一个测试项目来对我的项目进行单元测试之后。运行测试项目后,主项目、类和它的方法没有给出任何错误,但是如果在主项目的该方法中使用了任何 zxing 框架类,则在运行时而不是编译时出现上述错误。请告诉我如何解决这个问题?

4

9 回答 9

33

由于第三方库引用添加了两次,您会收到此错误。您已在测试项目的构建路径中添加了应用程序路径。所以库引用自动添加到测试项目”。在属性-> android下删除测试项目中的任何库引用。

仅供参考, 请单击此处查看详细说明

于 2012-11-26T10:45:41.013 回答
11

这是因为 zxing jar 文件被加载了两次,您必须在编译时将 zxing 库设置为“提供”(如果您使用 Maven 编译代码),因此它不会将该库添加到您的字节码中。这样你就不会得到错误

于 2013-05-15T15:07:20.397 回答
9

不幸的是,我见过的最好的解决方案是使用带有这些代码行的脚本并使用 Espresso v2.0:

adb shell setprop dalvik.vm.dexopt-flags v=n,o=v
adb shell stop installd
adb shell start installd

在开始测试之前执行它。只需执行一次。

于 2015-03-04T19:14:43.143 回答
6

我在 Intelij Idea 中更改了测试项目设置。转到 Modules -> Dependencies,然后将测试项目的范围设置为“提供”。

于 2013-12-05T14:54:58.423 回答
4

我收到此错误是因为我正在使用番石榴,而 Espresso 也包含番石榴。

如果您使用 Gradle 和 Android Studio,您可以从依赖项中排除包,如下所示:

androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
   exclude group: 'com.google.guava'
}
于 2014-09-16T13:09:17.383 回答
3

从 Eclipse 中项目的 Java 构建路径下的“订购和导出”选项卡中取消选中 jars(在我的情况下为地图和 google play services jar)。但让它们添加到“库”选项卡中。单击确定,清理项目并立即构建。有用。

于 2014-02-21T14:44:58.420 回答
2

我有时会遇到这个错误。只是 build->clean 项目帮助了我

于 2016-01-25T18:42:30.347 回答
2

如果您不是特别需要 API 版本较低 (<=19) 的设备,您可以留下传递依赖并创建一个 API 版本较高的模拟器。

这只发生在 API 低于 Lollipop (API 21) 的设备上。在更高/等于 API 21 的模拟器上运行测试正常运行,没有问题。

于 2017-03-01T16:55:12.700 回答
0

我在低于 21 的 api 级别上有这个错误。只是 build->rebuild 项目帮助了我。

于 2019-12-02T12:49:53.217 回答