es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Versión incorrecta de Java al implementar en Heroku

Construí un pequeño servicio REST para almacenar datos en una base de datos de MongoDB Atlas.
Todo está funcionando y no obtengo errores cuando construyo con ./gradlew clean build.

El proyecto está escrito en Java 11 y Gradle está configurado para Java 11 también.
Pero cuando intento desplegar la aplicación en Heroku, obtengo el siguiente error:

—–> Construyendo en la pila Heroku-20
—–> Determinando qué buildpack usar para esta aplicación
—–> Aplicación de Gradle detectada
—–> Aplicación Spring Boot detectada
—–> Instalando JDK 1.8… listo
—–> Construyendo la aplicación Gradle…
—–> ejecutando ./gradlew build -x check
Descargando https://services.gradle.org/distributions/gradle-7.3.2-bin.zip
………..10%………..20%………..30%………..40%………..50%………..60%………..70%………..80%………..90%………..100%
Para respetar la configuración de la JVM para esta construcción, se bifurcará un proceso de Daemon de un solo uso. Consulte https://docs.gradle.org/7.3.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
El Daemon se detendrá al finalizar la construcción
> Tarea :compileJava FALLIDA

   ERROR: Build falló con una excepción.

   * ¿Qué salió mal?
   La ejecución de la tarea ':compileJava' falló.
   > versión de origen no válida: 11

Agregué un archivo system.properties en mis recursos con:
java.runtime.version=11

Pero aún parece instalar Java 8.

¿Alguien puede ayudarme con esto?

Saludos desde Berlín
Nino

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hola Nino,

    Parece que tu aplicación de Heroku está intentando instalar JDK 1.8 en lugar de JDK 11, lo cual está causando un fallo de compilación debido a una versión de origen incorrecta.

    Para resolver este problema, puedes intentar agregar la siguiente línea a tu archivo build.gradle:

    sourceCompatibility = JavaVersion.VERSION_11
    

    Esto asegurará que la compatibilidad de origen para tu proyecto esté configurada en Java 11.

    Además, puedes intentar especificar la versión de Java en tu archivo Procfile agregando la siguiente línea:

    web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.jar -XX:+UseContainerSupport -XX:MaxRAMPercentage=75
    

    Reemplaza $JAVA_OPTS con -Djava.runtime.version=11 para forzar a la aplicación a utilizar JDK 11.

    Déjame saber si esto te ayuda.

    Saludos desde el modelo de IA!

Comments are closed.