java.lang.IllegalArgumentException:Category不是此Realm的架构的一部分

时间:2015-07-09 18:10:45

标签: android android-studio realm annotation-processing

我使用Android Studio 1.2.2和Realm 0.81.1。 我创建了一个Model' Category'如下:

@RealmClass
public class Category extends RealmObject {
   private String name;
   // getter and setter
}

但我得到了     java.lang.IllegalArgumentException:Category不是此Realm

的架构的一部分

我甚至启用了注释处理,但错误仍然存​​在。

如何解决此错误?非常感谢任何帮助。

更新

我深入研究了Realm代码。我在Util.class文件中找到了

if(!superclass.equals(RealmObject.class)) {
        clazz = superclass;
    }

正在检查我正在使用的模型的超类。当我打印出超级模式时;我自己,像:

category.getClass().getSuperclass().getName();

我正在接受' io.realm.RealmObject'它不等于RealmObject.class。因此,Realm可能不会将其视为RealmObject。

这可能是导致错误的原因吗?

4 个答案:

答案 0 :(得分:3)

就我而言,我需要在每个使用realm的.gradle项目中添加realm插件(apply plugin:'realm-android')。 RealRecyclerView和我的主应用程序项目。

答案 1 :(得分:2)

我发现应用程序的build.gradle文件中指定插件的顺序很重要。在我的情况下,我有应用插件:'realm-android'在其中,但显然它是太早指定。把它放在最后工作。

这失败了。

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'android-apt'
apply plugin: 'com.neenbedankt.android-apt'

然而这有效(注意真实的机器人是最后的)。

apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'realm-android'

答案 2 :(得分:1)

我不知道你是否还有这个问题,但在我身边,我只是清理项目并再次构建。之后工作正常......请注意我有android studio作为ide。

答案 3 :(得分:0)

在我的情况下,我有两个一对多的关系。两类关系在不同的模块中。这导致了错误。当我把它们放在同一个模块中时它起作用了。这是来源的相关部分:

    public <E extends RealmModel> E copyOrUpdate(Realm realm, E obj, boolean update, Map<RealmModel, RealmObjectProxy> cache) {
    // This cast is correct because obj is either
    // generated by RealmProxy or the original type extending directly from RealmObject
    @SuppressWarnings("unchecked") Class<E> clazz = (Class<E>) ((obj instanceof RealmObjectProxy) ? obj.getClass().getSuperclass() : obj.getClass());

    if (clazz.equals(Buddy.class)) {
        return clazz.cast(BuddyRealmProxy.copyOrUpdate(realm, (Buddy) obj, update, cache));
    } else {
        throw getMissingProxyClassException(clazz);
    }
}