2016-03-07 45 views
-1

科特林版本1.0.0,版本境界0.88.0-快照 我下载的境界科特林演示,并运行 如果这样的代码:科特林境界演示canot运行

var person = Person() 
    person.id = 1 
    person.name = "Young Person" 
    person.age = 14 
    realm.beginTransaction() 
    realm.copyToRealm(person) 
    realm.commitTransaction() 

抛出异常:产生的原因: java.lang.ClassCastException:io.realm.examples.kotlin.model.Person不能转换到io.realm.PersonRealmProxyInterface

否则我改变这样的代码:

realm.beginTransaction() 
    // Add a person 
    var person = realm.createObject(Person::class.java) 
    person.id = 1 
    person.name = "Young Person" 
    person.age = 14 
    // When the transaction is committed, all changes a synced to disk. 
    realm.commitTransaction() 

然后领域插入一个数据,但是person.name,id,age是空值或0;

如何解决呢

+0

克隆'realm-java'项目后,先尝试在项目的根目录下运行'/ gradlew installRealmJava'。然后建立这个例子。 – beeender

+0

你不显示你的Person类,很高兴看到。 –

回答

3

随着你必须用自己的摇篮插件以及境界0.88.0快照。如果谷歌这个异常(realm java.lang.ClassCastException ProxyInterface),你会发现这Github Issue - 2353它说:

We just merged our byte code weaver into master, and it sounds like it isn't being triggered in your case. Note that from 0.88.0-SNAPSHOT you have to use our Gradle plugin: https://realm.io/news/android-installation-change/

以前,您安装领域,如:

repositories { 
    jcenter() 
} 

dependencies { 
    compile 'io.realm:realm-android:<version>' 
} 

现在你必须安装它也包括了摇篮插件:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath "io.realm:realm-gradle-plugin:<version>" 
    } 
} 

apply plugin: 'realm-android' 

使字节码编织打开。如果没有这个,你就会收到一个与你的第一个用例完全相同的错误(这是正确的代码,但对于你选择使用的快照版本,你还需要Gradle插件的额外步骤)。上面的链接中还有其他重要的注释,以及Realm最新版本中的更改发行说明。

+0

我添加了'classpath'io.realm:realm-gradle-plugin:“'和'apply plugin:'realm-android'',但错误如'错误:Gradle:执行失败,任务':app:transformClassesWithJarMergingForDebug'。 > com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:io/realm/annotations/Ignore.class'有时是Index.class,我发现:[link](https ://github.com/realm/realm-java/issues/1545 )和[链接](https://github.com/realm/realm-java/issues/1807),但canot解决它,帮助,thx – vslimit

+0

你能否开始一个新的问题,你需要包含你的依赖列表以及gradle dependencies命令的输出,因为它会显示另外一个Realm库的副本。这里不能解决这个问题。 –