Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Bug] Error al iniciciar aplicación

Seguidos todos los pasos del video, al ejecutar mi aplicación se muestra el siguiente error cuando presiono ENTER despues de haber elegido el nombre de la serie "game of thrones"

2024-11-15T08:01:06.868-06:00 INFO 7024 --- [screenmatch] [ main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2024-11-15T08:01:06.880-06:00 ERROR 7024 --- [screenmatch] [ main] o.s.boot.SpringApplication : Application run failed

java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "com.aluracursos.screenmatch.model.DatosSerie.totalDeTemporadas()" is null

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadAdjunto el código del RECORD DatosSerie

package com.aluracursos.screenmatch.model;

import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true) public record DatosSerie( @JsonAlias("Title") String titulo, @JsonAlias("totalSeasons") Integer totalDeTemporadas, @JsonAlias("imdbRating") String evaluacion ) { }

Adjunto código de CLASE Principal

package com.aluracursos.screenmatch.principal;

import com.aluracursos.screenmatch.model.DatosSerie; import com.aluracursos.screenmatch.model.DatosTemporadas; import com.aluracursos.screenmatch.service.ConsumoAPI; import com.aluracursos.screenmatch.service.ConvierteDatos; import java.util.ArrayList; import java.util.List; import java.util.Scanner;

public class Principal {

private Scanner teclado = new Scanner(System.in);
private ConsumoAPI consumoAPI = new ConsumoAPI();
private final String URL_BASE = "http://www.omdbapi.com/?t=";
private final String API_KEY = "apikey=XXXXXXX";
private ConvierteDatos conversor = new ConvierteDatos();

public void muestraElMenu(){
    System.out.println("Por favor escribe el nombre de la serie que deseas buscar");
    //Busca los datos generales de la series
    var nombreSerie = teclado.nextLine();
    var json = consumoAPI.obtenerDatos(URL_BASE + nombreSerie.replace(" ","+") + API_KEY);
    var datos = conversor.obtenerDatos(json, DatosSerie.class);

    //Busca los datos de todas las temporadas

    List<DatosTemporadas> temporadas = new ArrayList<>();
    for (int i = 1; i <= datos.totalDeTemporadas(); i++) {
        json = consumoAPI.obtenerDatos( URL_BASE + nombreSerie.replace(" ","+") + "&Season=" + i + API_KEY);
        var datosTemporadas = conversor.obtenerDatos(json, DatosTemporadas.class);
        temporadas.add(datosTemporadas);
    }
    temporadas.forEach(System.out::println);
}

}

2 respuestas

¡Hola Bryan!

Entiendo que estás experimentando un error al iniciar tu aplicación después de haber seguido los pasos del video. El error que estás viendo parece estar relacionado con un NullPointerException al intentar invocar el método intValue() en un objeto Integer que es nulo.

Después de revisar tu código, parece que el problema podría estar en la inicialización de la variable totalDeTemporadas en tu clase DatosSerie. Dado que estás obteniendo este valor de una API externa, es posible que esté llegando como nulo en ciertos casos, lo que ocasiona el error al intentar invocar el método intValue().

Una forma de solucionar este problema sería verificar si totalDeTemporadas es nulo antes de intentar utilizarlo. Podrías hacer algo como:

List<DatosTemporadas> temporadas = new ArrayList<>();
if (datos.totalDeTemporadas() != null) {
    for (int i = 1; i <= datos.totalDeTemporadas(); i++) {
        // Resto del código para obtener los datos de las temporadas
    }
}

Al realizar esta verificación, te aseguras de que el código que depende de totalDeTemporadas no se ejecute si es nulo, evitando así el NullPointerException.

Espero que esta sugerencia te ayude a solucionar el problema. Si necesitas más ayuda, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Buenas tardes estimados compañeros, agradezco tambien a Daysibel por la ayuda brindada. Al final detecté que el problema se debia que faltaba el simbolo Ampersand (&) en el incio de mi constante API_KEy por lo que daba error la solcitud del API OMDB

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad