【问题标题】:Kotlin + Java 9 modules: Module java.base cannot be found in the module graphKotlin + Java 9 模块:在模块图中找不到模块 java.base
【发布时间】:2019-07-17 21:21:50
【问题描述】:

我在构建使用 Java 9 功能的 Kotlin 项目时遇到了一些问题。我知道 kotlin 只允许生成 Java 8 字节码,但根据 kotlinlang.org 它应该支持这个功能,因为 Kotlin 1.2:

Kotlin 标准库现在与 Java 9 完全兼容 模块系统,禁止拆分包(多个jar文件 在同一个包中声明类)。

好吧,让我来解决我的问题:当我尝试执行 gradle build 任务时遇到了这个问题:

04:29:27:正在执行任务“构建”...

Task :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:任务执行完成“构建”。

我在 Google 上搜索了那个错误,发现 this topic 有一个人有同样的问题,他说他通过定位大于 8 的 JDK 来修复它,但我已经使用 JDK 11 作为项目 SDK 和 @987654327 @。

我将把 build.gradle 和项目结构的一些重要部分留给你们检查。

build.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 上执行时出现此错误。

【问题讨论】:

    标签: java gradle kotlin java-module


    【解决方案1】:

    我将我的 gradle jdk 从 JDK 8 更改为 JDK 11,现在它就像一个魅力。

    【讨论】:

    • 这对我也有用,但在 Maven 中。将目标 jdk 从 1.8 更改为 11,它可以工作。
    • 在我的情况下,我仔细检查了我刚刚导入的一个有此错误的新项目。一切都设置正确。重新启动 IntelliJ 解决了该错误。
    【解决方案2】:

    如果更改 JDK 版本不起作用,请尝试 IntelliJ 中的修复 IDE 选项

    文件 -> 修复 IDE

    【讨论】:

    • 这对我有用...谢谢
    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多