Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用Kotlin在项目中设置域_Java_Android_Realm_Kotlin - Fatal编程技术网

Java 无法使用Kotlin在项目中设置域

Java 无法使用Kotlin在项目中设置域,java,android,realm,kotlin,Java,Android,Realm,Kotlin,我正在尝试用Realm在Kotlin中构建一个测试项目。 这是我的模型: open class Book : RealmObject() { // Standard getters & setters generated by your IDE… @PrimaryKey open var id: Long = 0 open var title = "" open var description = "" open var autho

我正在尝试用Realm在Kotlin中构建一个测试项目。 这是我的模型:

open class Book : RealmObject() {

    // Standard getters & setters generated by your IDE…
    @PrimaryKey
    open var id: Long = 0

    open var title = ""

    open var description = ""

    open var author = ""

    open var imageUrl = ""
}
我得到一个例外:

FATAL EXCEPTION: main
                                                                        Process: app.androidhive.info.realm, PID: 18782
                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{app.androidhive.info.realm/app.androidhive.info.realm.activity.MainActivity}: java.lang.IllegalArgumentException: Book is not part of the schema for this Realm
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                            at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:148)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                         Caused by: java.lang.IllegalArgumentException: Book is not part of the schema for this Realm
我四处搜索解决方案,在build.gradle中添加了
classpath“io.realm:realm-gradle-plugin:2.2.2”
应用插件:'realmandroid'

dependencies {
    ...
    // Realm
    compile 'io.realm:realm-android:0.87.4'
    kapt "io.realm:realm-annotations:0.87.4"
    kapt "io.realm:realm-annotations-processor:0.87.4"
}
在模块应用程序中生成脚本。这给了我另一个问题:

Error:(15, 48) Cannot access '<init>': it is public/*package*/ in 

'Builder'
/Volumes/Toshiba/Users/macuser/Development/Android/Exersises/MyApplication/app/src/main/java/realmtest/realm/RealmController.kt
Error:(27, 15) Unresolved reference: refresh
Error:(34, 15) Unresolved reference: clear
Error:(53, 23) Unresolved reference: allObjects

[KOTLIN] deleting /Volumes/Toshiba/Users/macuser/Development/Android/Exersises/MyApplication/app/build/tmp/kotlin-classes/debug on error
错误:(15,48)无法访问“”:它是公共的/*package*/in
“建筑商”
/Volumes/Toshiba/Users/macuser/Development/Android/exercises/MyApplication/app/src/main/java/realmtest/realm/RealmController.kt
错误:(27,15)未解析的引用:刷新
错误:(34,15)未解析的引用:清除
错误:(53,23)未解析的引用:AllObject
[KOTLIN]删除/Volumes/Toshiba/Users/macuser/Development/Android/exercises/MyApplication/app/build/tmp/KOTLIN类/debug-on-error
若这本书是用java编写的,我只能成功地构建我的项目。
如何让Realm和Kotlin协同工作,有什么建议吗?

使用RealmClass注释+RealmModel接口

import io.realm.Realm
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass

@RealmClass
open class Example(
    @PrimaryKey open var Id : Long = 0,
    open var Field : String = ""
) : RealmModel
在模块中添加渐变文件

apply plugin: 'realm-android'
classpath "io.realm:realm-gradle-plugin:2.2.2"
在项目渐变文件中添加

apply plugin: 'realm-android'
classpath "io.realm:realm-gradle-plugin:2.2.2"

无需额外编译/kapt,RealmJava4.1.0已经发布,Kotlin领域的大部分问题已经解决!您不需要使用
openvar
,只需使用
var
。你可以测试。我的示例用于使用kotlin在Realm object Server中测试模块。

您不应该将版本0.87.4与版本2.2一起添加。3@EpicPandaForce你是说io的verson 2.2.3.realm:realm gradle插件?我尝试过这个,我得到了“找不到io.realm:realm gradle plugin:2.2.3”gradle build error谢谢,@БаааБаБааааааа107!以防万一,它会对某人有所帮助:我必须做一些其他更改来构建项目。realmConfiguration.build()调用中不需要args,在调用之前我必须调用Realm.init(上下文)。另外,refresh()、clean()和allObjects()方法分别替换为waitForChange()、delete()和where()。findAll()方法,如下所述:。干杯waitForChange()的工作方式与refresh()不同,请改用此选项