Gradle: No se pudo determinar la versión de Java desde '11.0.2'
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.properties
contiene 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
Hay dos aplicaciones Gradle diferentes en su sistema.
Gradle en todo el sistema.
Esta aplicación es invocada porgradle (arguments)
.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 --version
se 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 --version
dentro 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 --version
falló, 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:installDebug
no 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 ./gradlew
como 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 gradle
y no ./gradlew
).
Como distributionUrl
todavía apunta a una versión anterior, actualice el contenedor usando:
gradle wrapper --gradle-version 5.1.1
Nota: Usar gradle
y nogradlew
La actualización gradle/wrapper/gradle-wrapper.properties
con la siguiente versión me solucionó:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip