不能使用Gradle和Kotlin编译项目
在从1.1.4-3到1.1.50(或51)碰撞kotlin-gradle-plugin之后,以及所有与Kotlin相关的库,在尝试导入gradle文件时遇到类似下面的错误:
Unable to build Kotlin project configuration Details: java.lang.reflect.InvocationTargetException: null Caused by: java.lang.NoSuchMethodError: kotlin.reflect.jvm.internal.KClassImpl.getData()Lkotlin/reflect/jvm/internal/ReflectProperties$LazyVal;
使用较旧版本的插件(1.1.4-3)时,编译工作正常。
完整的gradle文件:
apply plugin: 'war' apply plugin: 'com.google.cloud.tools.appengine' apply plugin: 'kotlin' apply plugin: 'kotlin-kapt' apply plugin: "net.ltgt.apt" apply plugin: 'idea' apply plugin: 'org.jetbrains.dokka' def daggerVersion = "2.11" sourceCompatibility = '1.8' targetCompatibility = '1.8' buildscript { repositories { mavenCentral() maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.9" classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.2' classpath "net.ltgt.gradle:gradle-apt-plugin:0.3" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } dependencies { compile "com.google.appengine:appengine-api-1.0-sdk:${appengineVersion}" compile "com.google.appengine:appengine-endpoints-deps:${appengineVersion}" compile "com.google.dagger:dagger:${daggerVersion}" compile 'com.google.endpoints:endpoints-framework:2.0.5' compile project(':backend') kapt "com.google.dagger:dagger-compiler:${daggerVersion}" apt "com.google.dagger:dagger-compiler:${daggerVersion}" testCompile 'junit:junit:4.12' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.google.code.gson:gson:2.8.2" compile 'org.thymeleaf:thymeleaf:3.0.7.RELEASE' compile 'com.warrenstrange:googleauth:1.1.2' compile 'org.mindrot:jbcrypt:0.4' testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testCompile "org.mockito:mockito-core:2.+" testCompile "com.google.appengine:appengine-api-labs:${appengineVersion}" testCompile "com.google.appengine:appengine-api-stubs:${appengineVersion}" testCompile "com.google.appengine:appengine-tools-sdk:${appengineVersion}" testCompile "com.google.appengine:appengine-testing:${appengineVersion}" } appengine { stage { enableJarClasses = true } } repositories { mavenCentral() } compileKotlin{ kotlinOptions{ jvmTarget = 1.8 } } dokka { outputFormat = 'html' outputDirectory = file("${buildDir}/javadoc") } sourceSets { main.java.srcDirs += 'src/main/java' main.java.srcDirs += 'build/generated/source/kapt/main' main.kotlin.srcDirs += 'src/main/kotlin' } idea { module { sourceDirs += file("./build/generated/source/kapt/main") excludeDirs -= file("$buildDir") excludeDirs += file("$buildDir/dependency-cache") excludeDirs += file("$buildDir/libs") excludeDirs += file("$buildDir/tmp") } }
编辑 – 解决方案
只是为了阐述杰克的答案:我必须找到gradle-wrapper.properties并更改分发网址为:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip
我遇到了同样的问题。 使用gradle 3.4(+)将为我解决它。
- 无法让dokka在gradle / android项目上生成kotlin文档
- Kotlin kapt,gradle和ebean插件构建失败
- Gradle错误升级到Android Studio 3.0 Beta 1
- Android的gradle无法find方法’org.grade.api.internal.file.DefaultSourceDirectorySet’
- 在运行应用程序时,Intellij不包括对classpath的gradle依赖
- 错误:执行失败的任务':app:kaptDemoTestingDebugKotlin'
- kotlin-gradle插件自动配置错误
- Gradle无法解析kotlin gradle插件1.1.1 – InvalidAlgorithmParameterException
- 在gradle-kotlin-dsl中的Android产品Flavors