项目不会与Kotlin 1.1.3一起构建
我有一个Android项目,我最近更新了1.1.3,每次我建立我得到以下错误:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > kotlin.jvm.internal.FunctionReference.(ILjava/lang/Object;)V
其他问题通常说,这意味着stdlib不包括在内,但我已经明确添加它。 使用1.1.2-5
虽然工作,并且1.1.3
已经为其他项目工作。
解
问题出在我与kapt混合的注释处理器。 对于像DbFlow和Glide这样的项目,annotationProcessor依赖可以直接与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
我得到以下内容:
$ ./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 (*)
根据我的经验,你:
- 不应该混用
kapt
和annotationProcessor
- 使用
kapt3
,使用apply plugin: 'kotlin-kapt'
- 不要使用
kapt { generateStubs true } }
(这不适用于kapt3
)
另外检查你的Kotlin插件和你的Gradle插件是否是最新的。
此外,我通常不使用标准lib的jre7
版本,但我怀疑这是这里的问题。
这是一个更详尽的列表“与Kotlin不起作用”: https : //gist.github.com/lmller/3c43eff454f7508474210fb2491b488a
错误消息报告为:
java.lang.NoSuchMethodError:
kotlin.jvm.internal.FunctionReference。
( 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
版本< 1.1
。 并将其从您的项目中排除。 如下所示:
dependencies{ compile('which dependency use stdlib < 1.1'){ exclude group:'org.jetbrains.kotlin', module:'kotlin-stdlib' } }
加:
套用插件:’kotlin-kapt’