Kotlin + Java 9模块:在模块图中找不到模块java.base

时间:2019-02-24 07:43:44

标签: java gradle kotlin java-module

在构建使用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运行以获取完整的见解。

  •   
  • https://help.gradle.org

  • 获得更多帮助   
     

在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上执行时得到此错误即可。

Project Structure

1 个答案:

答案 0 :(得分:0)

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