在构建使用Java 9功能的Kotlin项目时遇到一些问题。我知道kotlin仅允许Java 8字节码生成,但是根据kotlinlang.org,它应该从Kotlin 1.2开始支持此功能:
Kotlin标准库现在与Java 9完全兼容 模块系统,禁止拆分软件包(多个jar文件 在同一包中声明类)。
好,让我解决一下问题:当我尝试执行gradle createlinklist
任务时,我得到了这个提示:
04:29:27:正在执行任务“构建” ...
任务:compileKotlin失败e:无法在模块图中找到模块java.base e:无法在模块图中找到模块java.management 模块图
失败:构建失败,并出现异常。
出了什么问题:任务':compileKotlin'的执行失败。
编译错误。请参阅日志以获取更多详细信息
尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的见解。
- 获得更多帮助
在0秒钟内构建失败1个可执行的任务:1个已执行编译错误。 请参阅日志以获取更多详细信息04:29:28:任务执行已完成“构建”。
我在Google上搜索了该错误,发现this topic的人也遇到了同样的问题,他说他通过将JDK设置为大于8的目标来解决了该错误,但是我已经将JDK 11作为项目SDK, build
。
我将把build.gradle和项目结构的一些重要部分留给你们检查。
build.gradle
sourceCompatibility
module-info.java
buildscript {
ext.kotlin_version = '1.3.21'
...
repositories { ... }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.17"
}
}
plugins {
...
}
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'application'
apply plugin: 'maven'
group 'io.github.dogobot.core'
version '4.0.0'
...
sourceCompatibility = 1.11
repositories {
mavenCentral()
jcenter()
maven { ... }
maven { ... }
maven {
url 'http://maven.ej-technologies.com/repository'
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
...
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
我可以在Intellij Idea上运行项目而没有任何问题,只需在gradle上执行时得到此错误即可。
答案 0 :(得分:0)
我将gradle jdk从JDK 8更改为JDK 11,现在它就像一种魅力。