Eu estava fazendo a aula da Alura pratica JAVA 1 e 2, Mas meu codigo apresenta o erro de: Exception in thread "main" java.lang.IllegalArgumentException: Não encontrou items. at JsonParser.parse(JsonParser.java:17) at App.main(App.java:24)
E meu codigo esta igual o da aula, menos o link, pois os links deles estao fora do ar, entao eu recriei o link do Json exatamente igual eles usam.
O main:
import java.io.InputStream;
import java.net.URI;
import java.net.URL;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.List;
import java.util.Map;
public class App {
public static void main(String[] args) throws Exception {
// Fazer conexao HTTP e buscar os top 250 filmes
String url = "https://raw.githubusercontent.com/Alexsanderro/ALURA-STICKERS/master/json/CodigoFonte.json";
URI endereco = URI.create(url);
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder(endereco).GET().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
String body = response.body();
// pegar so os dados que interessam (titulo, poster, classificacao)
var parser = new JsonParser();
List<Map<String, String>> listaDeFilmes = parser.parse(body);
// exibir e manipular os dados
for (Map<String, String> filme : listaDeFilmes) {
String urlImagem = filme.get("image");
String titulo = filme.get("title");
InputStream inputStream = new URL(urlImagem).openStream();
String nomeArquivo = titulo + ".png";
var geradora = new GeradoraDeFigurinhas();
geradora.cria(inputStream, nomeArquivo);
System.out.println("Titulo: " + titulo);
System.out.println("\u001b[34mClassificacao: \u001b[m" + filme.get("imDbRating"));
String estrela = filme.get("imDbRating");
double valor = 0;
try {
valor = Double.parseDouble(estrela);
} catch (NumberFormatException ex){
ex.printStackTrace();
}
int valorInteiro = (int)valor;
for (int i = 0; i < valorInteiro; i++) {
System.out.print("\uD83D\uDC99");
}
System.out.println("\n");
}
}
}
A classe para gerar uma imagem com descricao diferente:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
public class GeradoraDeFigurinhas {
public void cria(InputStream inputStream, String nomeArquivo) throws Exception {
// leitura da imagem
//InputStream inputStream = new URL("https://m.media-amazon.com/images/M/MV5BNDE3ODcxYzMtY2YzZC00NmNlLWJiNDMtZDViZWM2MzIxZDYwXkEyXkFqcGdeQXVyNjAwNDUxODI@._V1_FMjpg_UX1000_.jpg").openStream();
//InputStream inputStream = new FileInputStream("entrada/filme.jpg");
BufferedImage imagemOriginal = ImageIO.read(inputStream);
// cria nova imagem em memoria com transparencia e com tamanho novo
int largura = imagemOriginal.getWidth();
int altura = imagemOriginal.getHeight();
int novaAltura = altura + 200;
BufferedImage novaImagem = new BufferedImage(largura, novaAltura, BufferedImage.TRANSLUCENT);
// copiar a imagem original para nova imagem (em memoria)
Graphics2D graphics = (Graphics2D) novaImagem.getGraphics();
graphics.drawImage(imagemOriginal, 0 , 0, null);
// configurar a fonte
var fonte = new Font(Font.SANS_SERIF, Font.BOLD, 64);
graphics.setColor(Color.YELLOW);
graphics.setFont(fonte);
// escrever uuma frase na nova imagem
graphics.drawString("TOPZERA", 350, novaAltura - 100);
// escrever a nova imagem em um arquivo
File diretorio = new File("C:/Users/Alexs/IdeaProjects/untitled/saida");
if (diretorio.mkdir()) {
System.out.println("Diretorio criado");
} else {
System.out.println("Falha ao criar diretorio ou diretorio ja existente");
}
ImageIO.write(novaImagem, "png", new File(nomeArquivo));
}
}
erro:
Exception in thread "main" java.lang.IllegalArgumentException: Não encontrou items.
at JsonParser.parse(JsonParser.java:17)
at App.main(App.java:24)
Alguem poderia me ajudar?