Gradle: No se pudo determinar la versión de Java desde '11.0.2'

Resuelto lesley2958 asked hace 5 años • 30 respuestas

Ejecuté el siguiente comentario:

./gradlew app:installDebug

sólo para encontrarse con el registro:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

Cuando ejecuté ./gradlew --version, obtuve lo siguiente:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

Mi .../gradle/wrapper/gradle-wrapper.propertiescontiene lo siguiente que incluye distributionUrl=.../gradle-4.1-rc-1-all.zip:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip
lesley2958 avatar Jan 25 '19 09:01 lesley2958
Aceptado

Hay dos aplicaciones Gradle diferentes en su sistema.

  1. Gradle en todo el sistema.
    Esta aplicación es invocada por gradle (arguments).

  2. el gradle-wrapper
    El gradle-wrapper es específico de cada proyecto y solo se puede invocar dentro del directorio del proyecto, usando el comando ./gradlew (arguments).

La versión de Gradle para todo el sistema es 5.1.1 (como explicó el OP en los comentarios, al ejecutar el comando gradle --versionse devolvió la versión 5.1.1).

Sin embargo, la falla es el resultado de una llamada al gradle-wrapper ( ./gradlew). ¿Podrías comprobar la versión del contenedor Gradle de tu proyecto? Para hacer eso, ejecute ./gradlew --versiondentro de la carpeta de su proyecto, en el directorio donde están los archivos gradlew y gradlew.bat.

Actualización 1:
como la ejecución ./gradlew --versionfalló, puede verificar manualmente la versión de su contenedor abriendo el archivo:

(carpeta raíz del proyecto)/gradle/wrapper/gradle-wrapper.properties

con un sencillo editor de texto. La "distributionUrl" interna debería decirnos cuál es la versión del contenedor.

Actualización 2: según la pregunta actualizada del OP, la versión del gradle-wrapper es 4.1RC1 .
Gradle agregó soporte para JDK 11 en Gradle 5.0 . Por lo tanto, dado que 4.1RC no admite la ejecución en JDK 11, esto definitivamente es un problema.

La forma obvia sería actualizar el gradle-wrapper de su proyecto a la versión 5.0.
Sin embargo, antes de actualizar, intente ejecutar gradle app:installDebug. Esto utilizará el Gradle instalado en todo el sistema, cuya versión es 5.1.1 y admite la ejecución en Java 11. Si esto funciona, entonces su script de compilación (archivo build.gradle) no se ve afectado por ningún cambio importante entre v.4.1RC1 y v. 5.1.1 y luego puede actualizar su contenedor ejecutando desde la línea de comando dentro de la carpeta de su proyecto: gradle wrapper --gradle-version=5.1.1[*].

Si gradle app:installDebugno se ejecuta correctamente, entonces tal vez necesite actualizar su script de compilación de Gradle. Para actualizar de v.4.1RC1 a 5.1.1, el proyecto Gradle proporciona una guía ( 1 , 2 ) con cambios importantes y funciones obsoletas entre versiones menores, para que pueda actualizar gradualmente a la última versión.

Alternativamente, si por alguna razón no puede o no desea actualizar su script de compilación de Gradle, siempre puede optar por degradar su versión de Java a una que admita la ejecución de Gradle 4.1RC1.

[*] Como se señaló correctamente en la respuesta de @lupchiazoem , use gradle wrapper --gradle-version=5.1.1(y no ./gradlewcomo lo había publicado originalmente allí por error). La razón es que Gradle se ejecuta en Java. Puede actualizar su gradle-wrapper utilizando cualquier distribución de Gradle que funcione, ya sea el Gradle instalado en todo el sistema o el propio gradle-wrapper. Sin embargo, en este caso su contenedor no es compatible con su versión de Java instalada, por lo que debe usar Gradle para todo el sistema (también conocido como gradley no ./gradlew).

tryman avatar Jan 25 '2019 06:01 tryman

Como distributionUrltodavía apunta a una versión anterior, actualice el contenedor usando:

gradle wrapper --gradle-version 5.1.1

Nota: Usar gradley nogradlew

lupchiazoem avatar Feb 02 '2019 12:02 lupchiazoem

La actualización gradle/wrapper/gradle-wrapper.propertiescon la siguiente versión me solucionó:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Manuel Schmitzberger avatar Jan 08 '2020 10:01 Manuel Schmitzberger