2016-09-13 2 views
2

Я создал SelfGeneration Класс Realm с Kotlin и после добавления, что проект больше не строится. Как это исправить?Не удается создать проект Android после добавления класса Realm

@RealmClass open class SelfGeneration() : BaseRealmObject { 
    @PrimaryKey override var id: Int? = null 
    open var type: ItemType? = null 
    open var model: String? = null 
    open var watt: Int? = null 
    companion object { 
     fun getById(id: Int): SelfGeneration { 
      val realm = Realm.getDefaultInstance() 
      val selfGeneration = realm.where(SelfGeneration::class.java) 
        .equalTo(BaseRealmObject.Field.ID, id) 
        .findFirst() 
      return realm.copyFromRealm(selfGeneration) 
     } 
    } 
} 

Зависимости:

dependencies { 
    classpath com.android.tools.build:gradle:2.1.3 
    classpath io.realm:realm-gradle-plugin:1.2.0 
    classpath com.neenbedankt.gradle.plugins:android-apt:1.8 
    classpath "com.fernandocejas.frodo:frodo-plugin:0.8.1 
} 

Gradle ошибка:

Error:Execution failed for task javassist.
NotFoundException: com.theappsolution.conectric.model.SelfGeneration

+0

можете ли вы показать больше своих build.gradle, являются ли эти зависимости в вашем блоке 'buildScript'? –

+0

Попробуйте перезагрузить вашу IDE: https://youtrack.jetbrains.com/issue/KT-12912 – nhaarman

+1

проблема была в режиме мгновенного запуска, когда я отключил его, все стало нормально – Griill

ответ

2

Android Студия Instant Run функция и Realm не совместимы. И использование этой функции может привести к многим непонятным ошибкам и времени компиляции или времени выполнения. Включая тот, который вы сообщаете.

В Android при использовании Instant Run есть некоторые плагины, которые могут работать неправильно. В documentation for Instant Run он говорит:

Certain third-party plugins that perform bytecode enhancement may cause issues with how Instant Run instruments your app. If you experience these issues, but want to continue using Instant Run, you should disable those plugins for your debug build variant. You can also help improve compatibility with third-party plugins by filing a bug

Realm talks about their change to use bytecode weaving во время компиляции, так что это тип плагин, который может порвать с Instant Run либо во время компиляции или во время выполнения. И, конечно же, в Realm issue 1832 они рассказывают о проблемах с Instant Run (есть более 28 issues with the phrase "Instant Run" в трекере по вопросу о Царстве). Также другие вопросы о переполнении стека говорят об этих проблемах, таких как: Realm causes my app to crash when trying to build a RealmConfiguration.

Единственное текущее решение - отключить функцию Instant Run в настройках Android Studio, очистить проект и затем снова запустить/запустить.

Смежные вопросы