我将番石榴作为应用程序依赖项并在仪器测试中使用 Espresso。由于 Espresso 附带com.google.guava:guava:16.0
,并且我guava
在应用程序依赖项中有,因此我必须处理重复的依赖项问题。
Jake Wharton 在Double Espresso中指出,我可以通过执行以下操作来解决重复的依赖问题:
compile 'com.google.guava:guava:17.0'
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
exclude group: 'com.squareup.dagger'
exclude group: 'com.google.guava'
}
但是,使用该行时,我遇到了许多以下错误:
java.lang.NoSuchMethodError: com.google.common.base.Optional.get
at com.google.android.apps.common.testing.ui.espresso.base.ThreadPoolExecutorExtractor.getAsyncTaskThreadPool(ThreadPoolExecutorExtractor.java:50)
似乎 Espresso 没有找到番石榴依赖项。当我尝试
compile 'com.google.guava:guava:17.0'
androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
exclude group: 'com.squareup.dagger'
exclude group: 'com.google.guava'
}
androidTestCompile('com.google.guava:guava:17.0')
现在java.lang.NoSuchMethodError: com.google.common.base.Optional.get
从浓缩咖啡代码中消失了,但是当仪器测试命中使用番石榴方法之一的应用程序代码时,我仍然收到以下错误:java.lang.NoClassDefFoundError
当我摆脱时也会发生此错误androidTestCompile('com.google.guava:guava:17.0')
。
我试过用AndroidTestProvided
番石榴,没有运气。
当仪器测试使用番石榴方法命中应用程序代码时,为什么它找不到番石榴的路径,我已经没有想法了。
这是一个堆栈跟踪
Caused by: java.lang.NoClassDefFoundError: com/themis/clioAndroid/activity/calendar/calendarEntry/CalendarEntryListAdapter$1
at com.themis.clioAndroid.activity.calendar.calendarEntry.CalendarEntryListAdapter.<clinit>(CalendarEntryListAdapter.java:112)
... 34 more
Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:211)
at dalvik.system.DexPathList.findClass(DexPathList.java:315)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:58)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
... 35 more
它击中new Ordering<SomeClass>()
哪个使用com.google.common.collect.Ordering
.
任何反馈表示赞赏。