领域NoClassDefFoundError:rx.Observable

时间:2017-11-01 18:57:47

标签: android realm

我遇到了Realm文档中指出的问题:

  

Jackson Databind

     

Jackson Databind是一个用于将JSON数据绑定到Java类的库。

     

杰克逊使用反射来执行数据绑定。这种冲突   由于Realm对RxJava的支持,因为RxJava可能无法使用   类加载器。这可能会导致异常   这样:

Copy to clipboardjava.lang.NoClassDefFoundError: rx.Observable
at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
...

以下是建议的修复:

  

可以通过将RxJava添加到项目或创建来解决此问题   两个空的虚拟文件,如下所示。

Copy to clipboard// File 1
package io.reactivex;

public class Flowable {
}


// File 2
package io.reactivex;

public class Observable {
}
     

此问题也已报告给杰克逊项目here

问题:我在哪里创建文件,因此他们没有我的应用程序包名称? (例如:com.myApp.myPackage)

旁注:我是从SimpleXml体验到的,而不是Jackson(也许是simplexml使用的是jackson?)。我看过2个错误:

  1. Realm NoClassDefFoundError:rx.Observable Realm
  2. NoClassDefFoundError:io.reactivex.Observable

1 个答案:

答案 0 :(得分:13)

您使用的是早于v4.0.0的Realm,因此您需要创建包rx和名为Observable的虚拟类。但您只需要在src/main/java/rx中创建它。

package rx;

public class Observable {
}

对于Realm 4.0.0+,您需要src/main/java/io/reactivex

package io.reactivex;

public class Observable {
}

package io.reactivex;

public class Flowable {
}

package io.reactivex;

public enum BackpressureStrategy {
  MISSING,
  ERROR,
  BUFFER,
  DROP,
  LATEST
}