领域NoClassDefFoundError:rx.Observable

Pse*_*328 3 android realm

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

杰克逊达比林德

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

杰克逊使用反射来执行数据绑定.这与Realm对RxJava的支持相冲突,因为RxJava可能无法用于类加载器.这可能会导致异常,如下所示:

Copy to clipboardjava.lang.NoClassDefFoundError: rx.Observable
at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
...
Run Code Online (Sandbox Code Playgroud)

这是建议的修复:

这可以通过将RxJava添加到项目中来修复,也可以创建两个如下所示的空虚拟文件.

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

public class Flowable {
}


// File 2
package io.reactivex;

public class Observable {
}
Run Code Online (Sandbox Code Playgroud)

这个问题也在杰克逊项目中报告.

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

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

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

Epi*_*rce 13

您使用的是早于v4.0.0的Realm,因此您需要创建包rx,并调用虚拟类Observable.但你只需要创建它src/main/java/rx.

package rx;

public class Observable {
}
Run Code Online (Sandbox Code Playgroud)

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

package io.reactivex;

public class Observable {
}
Run Code Online (Sandbox Code Playgroud)

package io.reactivex;

public class Flowable {
}
Run Code Online (Sandbox Code Playgroud)

package io.reactivex;

public enum BackpressureStrategy {
  MISSING,
  ERROR,
  BUFFER,
  DROP,
  LATEST
}
Run Code Online (Sandbox Code Playgroud)