1
votes

Gradle Kotlin DSL ne trouve pas le package java.io

J'essaye de convertir le fichier build.gradle d'une application Android en DSL Kotlin. Ce fichier a une fonction comme celle-ci:

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

que j'ai converti en ceci:

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

J'obtiens une référence non résolue: ByteArrayOutputStream et l'application de l'importation qui le change en java.io.ByteArrayOutputStream () affiche une erreur Unresolved reference: io .

Est y a-t-il quelque chose que je fais mal? Merci d'avance.


0 commentaires

4 Réponses :


-1
votes

Cela fonctionne, il suffit d'être explicite sur ByteOutputStream en fonction de la version java utilisée par votre 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()
}


3 commentaires

Je veux utiliser java.io.ByteArrayOutputStream , pas quelque chose d'une API complètement différente.


@HenriqueRocha - euh, d'accord. Puis-je demander pourquoi? Si la fonction remplit le contrat d'obtention de votre hachage de validation en tant que chaîne, pourquoi vous souciez-vous de l'implémentation? Cela va littéralement concerner les bibliothèques java dont vous disposez sur votre chemin de classe gradle ... et vous essayez d'en utiliser une qui n'est pas là. Ceci est une suggestion pour celui qui pourrait être là, ou changer votre maison java gradle?


La question ici est que le package Java IO devrait être là. C'est un package Java totalement standard. Lorsque le code est Groovy, tout fonctionne. Cela ne fonctionne tout simplement pas quand je le change en Kotlin.



0
votes

Il s'agissait d'un problème avec Android Studio 3.5.6. Après la mise à niveau vers Android Studio 3.6, tout fonctionne.


0 commentaires

1
votes

J'ai eu ce problème dans le projet backend dans intellij idea, j'ai ajouté cette importation en haut du fichier build.gradle :

import java.io.ByteArrayOutputStream

Et maintenant ça marche.


0 commentaires

0
votes

Mon observation:

  • fermer le projet
  • supprimer les dossiers .idea et .gradle
  • ouvrir le projet en sélectionnant root- build.gradle.kts avec «ouvrir en tant que projet»

a aidé.


0 commentaires