Gradle: no se pudo determinar la versión de Java de '11 .0.2 '

133

Ejecuté el siguiente comentario:

./gradlew app:installDebug

solo 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

Mi versión de gradle es 5.1.1:

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time:   2019-01-10 23:05:02 UTC
Revision:     3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL:   1.1.1
Kotlin:       1.3.11
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9-LTS)
OS:           Mac OS X 10.13.6 x86_64

No estoy seguro de cómo proceder (intenté actualizar / degradar, pero nada ha funcionado hasta ahora).

ACTUALIZACIÓN: Cuando corrí ./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.propertiescontiene:

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
fuente
5
de acuerdo con este informe de error , ¿es posible que su contenedor de Gradle sea más antiguo?
Roddy of the Frozen Peas
mi versión de gradle es 5.1.1, que creo que debería estar bien.
lesley2958
2
Ejecuta el comando ./gradlew que inicia la versión de gradle asociada con este proyecto específico. No hay garantía de que la versión del proyecto sea la misma que la que instaló (5.1.1)
tryman
1
¿Esa información de versión es el resultado de gradle --versiono ./gradlew --version? Los proyectos basados ​​en Gradle a menudo usan un contenedor para facilitar que diferentes desarrolladores usen la misma versión de Gradle para construir el proyecto; esto también hace que las compilaciones sean más estables.
Slaw
esa es la versión degradle --version
lesley2958

Respuestas:

123

Hay dos aplicaciones Gradle diferentes en su sistema.

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

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

La versión de gradle de todo el sistema es 5.1.1 (como explicó el OP en los comentarios, ejecutando el comando gradle --version devolvió la versión 5.1.1).

Sin embargo, el error es el resultado de una llamada al gradle-wrapper (./gradlew ). ¿Podrías comprobar la versión de envoltura de 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: en
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 editor de texto simple. El "distributionUrl" dentro debería decirnos cuál es la versión del contenedor.

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

La forma obvia sería actualizar el contenedor gradle de su proyecto a la versión 5.0. Sin embargo, antes de actualizar, intente ejecutar gradle app:installDebug. Esto usará su Gradle instalado en todo el sistema cuya versión es 5.1.1 y es compatible con Java 11. Vea si esto funciona. Si lo hace, entonces su buildscript (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, tal vez deba actualizar su script de compilación de Gradle. Para actualizar de la v.4.1RC1 a la 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 sea compatible con Gradle 4.1RC1.

[*] Como se señaló correctamente en otra 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 usando cualquier distribución de Gradle que funcione, ya sea su 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 en todo el sistema (también conocido como gradley no ./gradlew).

Tryman
fuente
1
@tryman gracias! para mí fue tu actualización 2 lo que me ayudó. Como regla general, creo que verificaría la versión de Gradle en el futuro.
Programador ávido
no indica exactamente cuál es la CAUSA del error. ¿Diferentes versiones?
João Pimentel Ferreira
¿Qué? Pensé que la Actualización 2 era bastante clara. Estaba intentando ejecutar el contenedor de Gradle de la versión 4.1RC1 con JDK11. Gradle agregó soporte para JDK11 en la versión 5.0. Entonces, ¿cuál es tu confusión @ JoãoPimentelFerreira? Esa fue la causa, el resto es la solución sobre cómo actualizar el contenedor del proyecto a una versión posterior que sea compatible con JDK11.
tryman
1
Ahora es mi turno de confundirme. Si de hecho tiene el contenedor de Gradle en la carpeta de su proyecto y una instalación de Gradle en todo el sistema, la solución paso a paso anterior debería funcionar para usted. ¿Intentó actualizar su contenedor ejecutando dentro de la carpeta de su proyecto el comando de actualización gradle wrapper --gradle-version=5.0? Reemplace 5.0 con la versión deseada, creo que ahora la última es 5.4
tryman
1
Sin embargo, una advertencia: entre la versión 3.3 de su contenedor y cualquier versión 5.x, es probable que haya algunos cambios importantes que puede encontrar o no. Es por eso que en mi respuesta le indico que primero cree su proyecto con Gradle en todo el sistema para verificar que todo funcione sin problemas con la versión de 5.x a la que desea actualizar antes de actualizar el contenedor de su proyecto. Si tiene prisa (siento urgencia en su tono), siempre puede usar el sistema gradle directamente o cambiar a un JDK más antiguo y ponerse al día con la actualización de su contenedor más tarde.
tryman
34

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

gradle wrapper --gradle-version 5.1.1

Nota: use gradley nogradlew

lupquiazoema
fuente
Eso funciona. El comando actualiza mi versión de contenedor de Gradle. Gracias.
Daniel
O simplemente reemplazar la versión en la gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip Versión 6 con JDK12 no parece funcionar. 5.1.1 funciona bien, gracias.
Liam Kernighan
11

En mi caso, la JAVA_HOMEvariable se estableció en /usr/lib/jvm/jdk-11.0.2/. Fue suficiente desarmar la variable de esta manera:

$ export JAVA_HOME=

dr0i
fuente
1
Esto también resolvió mi problema. jenv podría haber comenzado mis problemas inicialmente.
jokarl
para mí GRADLE_HOMEse actualizó (a 5.4.1 '') pero no la versión de Gradle (todavía apunta a la versión anterior 4.3), lo cual es extraño, pero reiniciar el terminal funcionó bien. algo extraño consource ~/.bash_profile
prayagupd
7

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
fuente
6

tl; dr : degradar java ejecutandoupdate-alternatives


La versión de mi sistema gradle era 4.4.1 y la versión de envoltura de gradle era 4.0. Después de ejecutar el comando dado por varias otras respuestas:

gradle wrapper --gradle-version 4.4.1

Todavía tenía el mismo error:

FAILURE: Build failed with an exception.

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

Resulta que java 11 no fue compatible hasta gradle 4.8, y mis repositorios de software solo tenían 4.4.1. (Además, la actualización a una versión más reciente de gradle podría haber sido incompatible con el paquete que estaba tratando de compilar).

La respuesta fue degradar java. En realidad, mi sistema ya tenía java8 instalado, y fue fácil cambiar entre versiones de Java ejecutando este comando y siguiendo las instrucciones:

sudo update-alternatives --config java
craq
fuente
5

Debido a que la versión contenedora no es compatible con 11+, puede hacer un truco simple para engañar a la versión más nueva de InteliJ para siempre.

  press3x Shift -> type "Switch Boot JDK" -> and change for java 8. 

https://blog.jetbrains.com/idea/2015/05/intellij-idea-14-1-4-eap-141-1192-is-available/

O si desea trabajar con java 11+, simplemente tiene que actualizar la versión del contenedor a 4.8+

SuperAndrew
fuente
1
Solo un aviso NO pruebe esta solución en Android Studio. Lo romperé.
Mauricio Sartori
3

Para abreviar la respuesta larga, actualice su gradlewusando la gradleherramienta del sistema . Tenga en cuenta que la siguiente actualización funciona incluso si la gradleversión de su sistema es < 5.

gradle wrapper --gradle-version=5.1.1
Rocky Inde
fuente
3

Tuve el mismo problema aquí. En mi caso, necesito usar una versión anterior de JDK y estoy usando sdkmanager para administrar las versiones de JDK, así que cambié la versión de la máquina virtual a 1.8.

sdk use java 8.0.222.j9-adpt

Después de eso, la aplicación se ejecuta como se esperaba aquí.

Maciel Bombonato
fuente
1

Resolví esto haciendo clic en Archivo -> Estructura del proyecto y luego cambié la ubicación de JDK para usar JDK incrustado (recomendado)

Derrick Lamptey
fuente
0

Me encontré con un problema similar. Borré estos:

  • bibliotecas y cachés de la carpeta .idea (YourApp> .idea> ..) Y
  • contenido de la carpeta de compilación.

    luego reconstruir.

* NO OLVIDE HACER UNA COPIA DE SEGURIDAD DE SU PROYECTO PRIMERO *

KAN
fuente
0

Me encontré con el mismo problema en Ubuntu 18.04.3 LTS. En mi caso, apt instaló gradle versión 4.4.1. La versión de Java ya instalada era la 11.0.4

El mensaje de compilación que recibí fue

Could not determine java version from '11.0.4'.

En ese momento, la mayoría de los documentos en línea hacían referencia a la versión 5.6 de gradle, así que hice lo siguiente:

sudo add-apt-repository ppa:cwchien/gradle
sudo apt update
sudo apt upgrade gradle

Luego repetí la inicialización del proyecto (usando "gradle init" con los valores predeterminados). Después de eso, "./gradlew build" funcionó correctamente.

Más tarde leí un comentario sobre un cambio en el formato de la salida de "java --version" que causó que gradle se rompiera, lo cual se corrigió en una versión posterior de gradle.

MgFrobozz
fuente
0

En mi caso, estaba intentando compilar y obtener APK para un antiguo proyecto de Unity 3D (para poder jugar el juego en mi teléfono Android). Estaba usando la versión más reciente de Android Studio y todos los paquetes de SDK que pude descargar a través de SDK Manager en Android Studio. Los paquetes SDK estaban ubicados en

C:/Users/Onat/AppData/Local/Android/Sdk 

Y el mensaje de error que recibí fue el mismo, excepto la versión "jdk-12.0.2" de JDK (Java Development Kit). JDK estaba ubicado en

C:\Program Files\Java\jdk-12.0.2

Y la variable de entorno en Windows era JAVA_HOME: C: \ Archivos de programa \ Java \ jdk-12.0.2

Después de 3 horas de investigación, descubrí que Unity no es compatible con JDK 10. Como se dice en https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Mi sugerencia es:

  1. Desinstale el JDK no deseado si ya tiene uno instalado. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Dirigirse a http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Inicie sesión o abra una cuenta de Oracle si aún no lo ha hecho.
  4. Descargue el JDK 8 más antiguo pero funcional para la configuración de su computadora (32 bits / 64 bits, Windows / Linux, etc.)
  5. Instale el JDK. Recuerde la ruta de instalación. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Si está utilizando Windows, abra las variables de entorno y cambie la ruta de Java haciendo clic con el botón derecho en Mi Computer/This PC>Properties>Advanced System Settings>Environment Variables>New>Variable Name: JAVA_HOME>Variable Value: [YOUR JDK Path, Mine was "C:\Program Files\Java\jdk1.8.0_221"]
  7. En Unity 3D, presione Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Además, en la misma ventana emergente, edite la Ruta del SDK. (Consíguelo de Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. Si es necesario, reinicie su computadora para que los cambios surtan efecto.
Onat Korucu
fuente
0

llegó al archivo de proyecto .. gradle / wrapper / gradlewrapper.properties

allí puede cambiar el valor de distributionurla la última versión. (Encontrado en docs.gradle.org)

atreyHazelHispanic
fuente
0

Enfrentaba el mismo problema en la configuración de Docker, mientras intentaba instalar Gradle-2.4con JDL 11.0.7. Tengo que instalar una versión posterior para solucionar el problema.

Aquí está el Dockerfile de trabajo

FROM openjdk:11.0.7-jdk
RUN apt-get update && apt-get install -y unzip
WORKDIR /gradle
RUN curl -L https://services.gradle.org/distributions/gradle-6.5.1-bin.zip -o gradle-6.5.1-bin.zip
RUN unzip gradle-6.5.1-bin.zip
ENV GRADLE_HOME=/gradle/gradle-6.5.1
ENV PATH=$PATH:$GRADLE_HOME/bin
RUN gradle --version
Adiii
fuente