领域 Android javassist.NotFoundException: io.realm.com_example_realmtest_data_SomethingRealmProxyInterface
Realm Android javassist.NotFoundException: io.realm.com_example_realmtest_data_SomethingRealmProxyInterface
我在 android 时对领域完全陌生,我从只有一个只有一个字段的实体的简单 kotlin 项目开始。
open class Something : RealmObject() {
@PrimaryKey
var id: Long = 0
}
我在我的应用程序中初始化了 Realm class:
class RealmApp : Application() {
override fun onCreate() {
super.onCreate()
Realm.init(this)
val config = RealmConfiguration.Builder().build()
Realm.setDefaultConfiguration(config)
}
}
当然,我添加了领域插件:
//Project level
dependencies {
...
classpath "io.realm:realm-gradle-plugin:5.9.0"
}
//Module level
apply plugin: 'realm-android'
简单的项目,但是每次我尝试编译它时,出现异常:
Caused by: javassist.NotFoundException: io.realm.com_example_realmtest_data_SomethingRealmProxyInterface
at javassist.ClassPool.get(ClassPool.java:452)
at io.realm.transformer.BytecodeModifier$Companion.addRealmProxyInterface(ByteCodeModifier.kt:96)
at io.realm.transformer.build.BuildTemplate.transformModelClasses(BuildTemplate.kt:109)
at io.realm.transformer.RealmTransformer.transform(RealmTransformer.kt:107)
at com.android.build.api.transform.Transform.transform(Transform.java:288)
at com.android.build.gradle.internal.pipeline.TransformTask.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
我找了一整天来解决这个问题,但没有找到任何东西。
结果证明我只需要 apply plugin: 'kotlin-kapt'
在我的模块级别 build.gradle。看起来 Kotlin 需要它来生成这些 类。因为那个愚蠢的错误我浪费了很多时间,所以我希望这个答案能帮助那些遇到类似错误的人。
编辑
正如评论中提到的 musoof,apply plugin: 'kotlin-kapt'
的顺序很重要。您必须在 apply plugin: 'realm-android'
之前包含它。否则你仍然会得到同样的错误。
我在 android 时对领域完全陌生,我从只有一个只有一个字段的实体的简单 kotlin 项目开始。
open class Something : RealmObject() {
@PrimaryKey
var id: Long = 0
}
我在我的应用程序中初始化了 Realm class:
class RealmApp : Application() {
override fun onCreate() {
super.onCreate()
Realm.init(this)
val config = RealmConfiguration.Builder().build()
Realm.setDefaultConfiguration(config)
}
}
当然,我添加了领域插件:
//Project level
dependencies {
...
classpath "io.realm:realm-gradle-plugin:5.9.0"
}
//Module level
apply plugin: 'realm-android'
简单的项目,但是每次我尝试编译它时,出现异常:
Caused by: javassist.NotFoundException: io.realm.com_example_realmtest_data_SomethingRealmProxyInterface
at javassist.ClassPool.get(ClassPool.java:452)
at io.realm.transformer.BytecodeModifier$Companion.addRealmProxyInterface(ByteCodeModifier.kt:96)
at io.realm.transformer.build.BuildTemplate.transformModelClasses(BuildTemplate.kt:109)
at io.realm.transformer.RealmTransformer.transform(RealmTransformer.kt:107)
at com.android.build.api.transform.Transform.transform(Transform.java:288)
at com.android.build.gradle.internal.pipeline.TransformTask.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
我找了一整天来解决这个问题,但没有找到任何东西。
结果证明我只需要 apply plugin: 'kotlin-kapt'
在我的模块级别 build.gradle。看起来 Kotlin 需要它来生成这些 类。因为那个愚蠢的错误我浪费了很多时间,所以我希望这个答案能帮助那些遇到类似错误的人。
编辑
正如评论中提到的 musoof,apply plugin: 'kotlin-kapt'
的顺序很重要。您必须在 apply plugin: 'realm-android'
之前包含它。否则你仍然会得到同样的错误。