Android 无法对null对象调用方法hasAnnotation()
我只是想把Realm数据库从0.86升级到2.1版本 但是随着Android Studio的出现,我们也面临着这个错误Android 无法对null对象调用方法hasAnnotation(),android,realm,Android,Realm,我只是想把Realm数据库从0.86升级到2.1版本 但是随着Android Studio的出现,我们也面临着这个错误 Error:Execution failed for task ':app:transformClassesWithRealmTransformerForDebug'. > Cannot invoke method hasAnnotation() on null object 更新(3) 没有任何原因,这会停止应用程序运行 有什么解决方案吗?因此根据堆栈跟踪: def
Error:Execution failed for task ':app:transformClassesWithRealmTransformerForDebug'.
> Cannot invoke method hasAnnotation() on null object
更新(3)
没有任何原因,这会停止应用程序运行
有什么解决方案吗?因此根据堆栈跟踪:
def allModelClasses=allClassNames
.findAll{it.endsWith('RealmProxy')}
.collect{classPool.getCtClass(it).superclass}
.findAll{it.hasaannotation(RealmClass.class)| it.superclass.hasaannotation(RealmClass.class)}
所以它说“如果你有一个以RealmProxy
结尾的类”,然后它试图得到它没有的超类(应该是RealmObject
或RealmModel
),因为它不是领域模式的一部分,所以它返回null
,转换器崩溃
解决方案1:将您的RealmProxy
类重命名为类似于,RealmFacade
之类的名称
或
解决方案2:使用RealmProxy
扩展一些没有@RealmClass
注释的随机类
public abstract class RealmProxyBase {
}
public class RealmProxy extends RealmProxyBase implements Closeable {
// ...
(同时,我为它提交了一份文件)因此,根据您的堆栈跟踪,:
def allModelClasses=allClassNames
.findAll{it.endsWith('RealmProxy')}
.collect{classPool.getCtClass(it).superclass}
.findAll{it.hasaannotation(RealmClass.class)| it.superclass.hasaannotation(RealmClass.class)}
所以它说“如果你有一个以RealmProxy
结尾的类”,然后它试图得到它没有的超类(应该是RealmObject
或RealmModel
),因为它不是领域模式的一部分,所以它返回null
,转换器崩溃
解决方案1:将您的RealmProxy
类重命名为类似于,RealmFacade
之类的名称
或
解决方案2:使用RealmProxy
扩展一些没有@RealmClass
注释的随机类
public abstract class RealmProxyBase {
}
public class RealmProxy extends RealmProxyBase implements Closeable {
// ...
(与此同时,我为此提交了一份文件)您的至少一个领域模型类出现了某种错误。这个错误消息没有更多内容吗?@EpicPandaForce但我的类模式中没有任何更改,它是从以前的版本开始工作的,您的意思是某些批注已被弃用吗?@EpicPandaForce在build中只有此错误消息。您是否使用
/gradlew clean assemble--stacktrace
从命令中清除然后重建。它应该报告崩溃的确切位置至少有一个领域模型类出现了某种错误。这个错误消息没有更多内容吗?@EpicPandaForce但我的类模式中没有任何更改,它是从以前的版本开始工作的,您的意思是某些批注已被弃用吗?@EpicPandaForce在build中只有此错误消息。您是否使用/gradlew clean assemble--stacktrace
从命令中清除然后重建。它应该报告崩溃的确切位置非常感谢你,亲爱的,是什么让我确信我的代码是正确的,我在以前的版本中有RealmProxy,它工作正常,没有任何问题,如何感谢你并准备好未来的问题:是的,但Realm在0.88.0及以上版本中添加了领域转换器,以前没有人遇到过这个NPE。尽管如此,解决方案2
还是很简单,这就是我要做的。非常感谢亲爱的,是什么让我确信我的代码是正确的,我以前的版本中有RealmProxy,它工作得很好,没有任何问题,如何感谢您并准备好未来的问题:是的,但是Realm在0.88.0及更高版本中添加了Realm Transformer,以前没有人遇到过这个NPE。不过,解决方案2
相当简单,这就是我要做的。