Gradle Kotlin DSL 找不到 java.io 包

Gradle Kotlin DSL can't find java.io package

我正在尝试将 Android 应用程序的 build.gradle 文件转换为 Kotlin DSL。 该文件具有如下功能:

def getLastCommitHash() {
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

我将其转换为:

fun getLastCommitHash() {
    val stdout = ByteArrayOutputStream()
    exec {
        commandLine("git", "rev-parse", "--short", "HEAD")
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

我收到 Unresolved reference: ByteArrayOutputStream 错误并应用将其更改为 java.io.ByteArrayOutputStream() 的导入显示 Unresolved reference: io 错误。

我做错了什么吗?提前致谢。

这是 Android Studio 3.5.6 的问题。升级到 Android Studio 3.6 后一切正常。

我在 intellij idea 的后端项目中遇到了这个问题,我在 build.gradle 文件的顶部添加了这个导入:

import java.io.ByteArrayOutputStream

现在可以使用了。

我的观察:

  • 关闭项目
  • 删除 .idea.gradle 个文件夹
  • 通过选择 root-build.gradle.kts 和“作为项目打开”打开项目

有帮助。

java.io 导入在 plugins 块之前工作。我可以使用以下 build.gradle.kts:

成功地为 Gradle 7.3.2 和 6.9.2 构建 运行
import java.io.ByteArrayOutputStream

plugins {
    `java-library`
}

println(ByteArrayOutputStream::class)

如果你 escape 完整的包名,那么你也可以在不导入 class 的情况下使其工作(如上测试):

plugins {
    `java-library`
}

println(`java.security`.MessageDigest::class)