Gradle Kotlin DSL не может найти пакет java .io - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь преобразовать файл build.gradle приложения Android в 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.

Что-то я делаю не так? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Это проблема с Android Studio 3.5.6. После обновления до Android Studio 3.6 все работает.

0 голосов
/ 06 января 2020

Это работает, просто нужно четко указать ByteOutputStream, в зависимости от того, какую java версию использует ваш gradle?.

fun getLastCommitHash(): String {
    val byteOut = com.sun.xml.internal.messaging.saaj.util.ByteOutputStream()
    project.exec {
        commandLine = "git rev-parse --short HEAD".split(" ")
        standardOutput = byteOut
    }
    return byteOut.toString()
}
...