Nat*_*nPB 4 java gradle kotlin java-module
我在构建使用 Java 9 功能的 Kotlin 项目时遇到了一些问题。我知道 kotlin 只允许生成 Java 8 字节码,但根据kotlinlang.org 的说法,它应该从 Kotlin 1.2 开始支持此功能:
Kotlin 标准库现在与 Java 9 模块系统完全兼容,该系统禁止拆分包(多个 jar 文件在同一包中声明类)。
好吧,让我解决我的问题:当我尝试执行 gradlebuild任务时遇到了这个问题:
04:29:27:正在执行任务“构建”...
任务 :compileKotlin FAILED e: 在模块图中找不到模块 java.base e: 在模块图中找不到模块 java.management
FAILURE:构建失败,出现异常。
出了什么问题:任务“:compileKotlin”执行失败。
编译错误。查看日志了解更多详情
尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。
在https://help.gradle.org获取更多帮助
BUILD FAILED in 0s 1 个可操作的任务:1 个执行编译错误。有关更多详细信息,请参阅日志 04:29:28:任务执行已完成“构建”。
我在谷歌上搜索了那个错误,发现这个主题有一个人有同样的问题,他说他通过针对大于 8 的 JDK 来修复它,但我已经使用 JDK 11 作为项目 SDK 和sourceCompatibility.
我会在这里留下 build.gradle 和项目结构的一些重要部分给你们检查。
构建.gradle
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"
}
模块信息.java
module io.github.dogobot.core {
    requires kotlin.stdlib;
    requires kotlin.reflect;
    requires kotlin.logging;
    requires java.management;
    requires BootingBits;
}
我可以在 Intellij Idea 上毫无问题地运行该项目,只是在 gradle 上执行时出现此错误。
我将我的 gradle jdk 从 JDK 8 更改为 JDK 11,现在它就像一个魅力。
| 归档时间: | 
 | 
| 查看次数: | 2880 次 | 
| 最近记录: |