Проект не будет построен с Kotlin 1.1.3

У меня есть проект Android, который я недавно обновил с помощью 1.1.3, и каждый раз при создании я получаю следующую ошибку:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> kotlin.jvm.internal.FunctionReference.<init>(ILjava/lang/Object;)V

Другие вопросы обычно говорят, что это означает, что stdlib не включен, но я определенно добавил его. Использование 1.1.2-5 работает, но 1.1.3 работал для других проектов.

Решение

Проблема заключалась в том, что я смешивал обработчик аннотации с kapt. Для проекты, такие как DbFlow и Glide, зависимость аннотациипроцессора может напрямую использовать с kapt.

Вернуться к исходному вопросу:

Здесь мой журнал Travis и ниже - мои зависимости:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.3-alpha', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile("ca.allanwang:kau:${KAU}")

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:${KOTLIN}"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit:${KOTLIN}"

    debugCompile "com.squareup.leakcanary:leakcanary-android:${LEAK_CANARY}"
    releaseTestCompile "com.squareup.leakcanary:leakcanary-android-no-op:${LEAK_CANARY}"
    releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${LEAK_CANARY}"
    testCompile "com.squareup.leakcanary:leakcanary-android-no-op:${LEAK_CANARY}"

    compile "com.github.Raizlabs.DBFlow:dbflow:${DBFLOW}"
    compile "com.github.Raizlabs.DBFlow:dbflow-core:${DBFLOW}"
    annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${DBFLOW}"
    kapt "com.github.Raizlabs.DBFlow:dbflow-processor:${DBFLOW}"
    compile "com.github.Raizlabs.DBFlow:dbflow-kotlinextensions:${DBFLOW}"

    //Icons
    compile "com.mikepenz:material-design-iconic-typeface:${IICON_MATERIAL}@aar"
    compile "com.mikepenz:community-material-typeface:${IICON_COMMUNITY}@aar"

    compile "org.jsoup:jsoup:${JSOUP}"

    compile "com.github.bumptech.glide:glide:${GLIDE}"
    annotationProcessor "com.github.bumptech.glide:compiler:${GLIDE}"

    compile("com.mikepenz:materialdrawer:${MATERIAL_DRAWER}@aar") {
        transitive = true
    }
    compile "co.zsmb:materialdrawer-kt:${MATERIAL_DRAWER_KT}"

    compile "nz.bradcampbell:paperparcel:${PAPER_PARCEL}"
    compile "nz.bradcampbell:paperparcel-kotlin:${PAPER_PARCEL}"
    kapt "nz.bradcampbell:paperparcel-compiler:${PAPER_PARCEL}"

    compile "com.jude:swipebackhelper:${SWIPE_BACK}"

    compile("com.crashlytics.sdk.android:crashlytics:${CRASHLYTICS}@aar") {
        transitive = true;
    }
}

Вот результат ошибки, когда я пытаюсь построить с полной stacktrace: [Удалено, потому что этот пост был слишком длинным] Я не уверен, что это помогает, но dbflow обычно имеет предупреждение о каждой сборке, так как ему не нужно генерировать классы каждый раз. Я отправил вопрос на их репо, но я не думаю, что это проблема, поскольку он отлично работает с 1.1.2-5

Изменить 2: я посмотрел на ./gradlew dependencies, и все они показали kotlin 1.1.3 (слишком долго, чтобы публиковать здесь). Некоторые из них зависели от 1.1.0 от их источников github, но это не должно быть затронуто, и исключение этих std-libs не разрешило ошибку.

Правка 3: При попытке .gradlew app:dependencies | grep org.jetbrains.kotlin я получаю следующее:

$ ./gradlew app:dependencies | grep org.jetbrains.kotlin
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.0.4 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    +--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3 -> 1.1.3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)
+--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.3
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.3
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.1 -> 1.1.2-3
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-3
|    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3 -> 1.1.3 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2-3 (*)

Ответы

Ответ 1

По моему опыту вы:

  • Не следует смешивать kapt и annotationProcessor
  • Используйте kapt3, используя apply plugin: 'kotlin-kapt'
  • Не используйте kapt { generateStubs true } } (это не разрешено с помощью kapt3)

Также проверьте, обновлены ли ваш плагин Kotlin и плагин Gradle.
Кроме того, я обычно не использую версию стандартного lib jre7, но я сомневаюсь, что это проблема здесь.

Вот более исчерпывающий список "что-то с Kotlin не работает": https://gist.github.com/lmller/3c43eff454f7508474210fb2491b488a

Ответ 2

сообщение об ошибке указано как:

java.lang.NoSuchMethodError:

kotlin.jvm.internal.FunctionReference. <init> (ILjava/lang/Object;) V является конструктором (Int, Object)

конструктор вводится в kotlin 1.1, как показано ниже:

@SinceKotlin(version = "1.1")
public FunctionReference(int arity, Object receiver) {
    super(receiver);
    this.arity = arity;
}

вы можете запустить ./gradlew dependencies и искать, какая зависимость использует kotlin-stdlib version < 1.1. и исключает его из вашего проекта. что-то вроде этого ниже:

dependencies{
   compile('which dependency use stdlib < 1.1'){
        exclude group:'org.jetbrains.kotlin', module:'kotlin-stdlib'
   }
}

Ответ 3

добавить:

применить плагин: 'kotlin-kapt'

введите описание изображения здесь