我遇到了 Realm 文档中指出的问题:
杰克逊数据绑定
Jackson Databind 是一个用于将 JSON 数据绑定到 Java 类的库。
Jackson 使用反射来执行数据绑定。这冲突了
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 {
}
这个问题也已报告给 Jackson 项目here https://github.com/FasterXML/jackson-databind/issues/1070.
问题:我应该在哪里创建这些文件,这样它们就不会包含我的应用程序的包名称? (例如:com.myApp.myPackage)
旁注:我是从 SimpleXml 遇到这种情况,而不是 Jackson(也许 simplexml 使用 jackson?)。我看到了 2 个错误:
- 领域 NoClassDefFoundError:rx.Observable 领域
- NoClassDefFoundError:io.reactivex.Observable
您使用的 Realm 版本早于 v4.0.0,因此您需要创建包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 {
}
and
package io.reactivex;
public class Flowable {
}
and
package io.reactivex;
public enum BackpressureStrategy {
MISSING,
ERROR,
BUFFER,
DROP,
LATEST
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)