我们正在尝试将robolectric集成到我们的项目中,但已经运行了 陷入一些意外的问题。
当我们不使用Robolectric时,项目编译得很好。然而, 我们在org.apache.http包中得到NoClassDefFoundError 使用Robolectric进行简单测试时。
Exception in thread "Thread-1" java.lang.NoClassDefFoundError: org/
apache/http/HttpRequest
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
at javassist.Loader.findClass(Loader.java:379)
at
com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.findClass(Robole ctricClassLoader.java:
60)
at javassist.Loader.loadClass(Loader.java:311)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at
com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.loadClass(Robole ctricClassLoader.java:
37)
at se.hsr.android.Info.updateInfoFromWebService(Info.java:57)
at se.hsr.android.Info$2.run(Info.java:99)
Caused by: java.lang.ClassNotFoundException: caught an exception while
obtaining a class file for org.apache.http.HttpRequest
at javassist.Loader.findClass(Loader.java:359)
at
com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.findClass(Robole ctricClassLoader.java:
60)
at javassist.Loader.loadClass(Loader.java:311)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at
com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.loadClass(Robole ctricClassLoader.java:
37)
... 11 more
Caused by: java.lang.IllegalStateException: shouldn't be modifying
bytecode after we've started writing cache!
class=org.apache.http.HttpRequest
at
com.xtremelabs.robolectric.bytecode.AndroidTranslator.onLoad(AndroidTransla tor.java:
68)
at javassist.Loader.findClass(Loader.java:340)
... 15 more
我们正在使用maven来构建我们的项目,我们已经包含了http-client 4.1(因为我们依赖于来自apache的http-mime 4.1 图书馆)。
由于Robolectric jar默认包含httpclient 4.0.3我们 无法理解为什么它找不到http类。我们假设它有 与AndroidTranslator试图修改字节码(to 与dalvik jvm兼容?)
如果有人能够对这件事情有所了解,我们会非常感激 荷。
答案 0 :(得分:0)
我遇到了同样的问题,我通过添加以下排除
来修复它 <dependency>
<groupId>com.pivotallabs</groupId>
<artifactId>robolectric</artifactId>
<version>1.0-RC1</version>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>