3
respostas

[Dúvida] BodyHandlers cannot be resolved or is not a field

Olá, estou precisando de ajuda pois não consigo rodar o cód da aula "Implementando a comunicação com web service". Utilizo o Vs code para fazer as atividades, n sei se isso pode influenciar em algo.

Código:

import java.io.IOException;

import java.net.URI;

import java.net.http.HttpClient;

import java.net.http.HttpRequest;

import java.net.http.HttpResponse;

public class PrincipalComBuscas {

public static void main(String[] args) throws IOException, InterruptedException {
    
    HttpClient client = HttpClient.newHttpClient();
    
    HttpRequest request  =  (HttpRequest) HttpRequest.newBuilder()
        
        .uri(URI.create("http://www.omdbapi.com/?t=vingadores&apikey=xxxxxxx"))
        
        .build();
    
    HttpResponse<String> response = client
            
            .send(request, HttpResponse.BodyHandlers.ofString());
    
    System.out.println(response.body());

}

}

Erro:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

BodyHandlers cannot be resolved or is not a field

at PrincipalComBuscas.main(PrincipalComBuscas.java:14)
3 respostas

Olá, Laís! Tudo bem?

Pelo que pude observar, você está utilizando a biblioteca java.net.http para fazer uma requisição HTTP. O erro que você está encontrando, "BodyHandlers cannot be resolved or is not a field", geralmente ocorre quando o compilador do Java não consegue encontrar a classe ou o campo especificado no código.

No seu caso, parece que o problema está na classe BodyHandlers. Você está usando a linha de código HttpResponse.BodyHandlers.ofString(), que é uma chamada válida no Java 11 ou superior.

No entanto, se você estiver usando uma versão do Java anterior à 11, essa chamada não será reconhecida, pois a biblioteca java.net.http (que inclui a classe BodyHandlers) foi adicionada apenas no Java 11.

Você pode verificar a versão do Java que está usando no VS Code indo em "Help > About" ou digitando java -version no terminal.

Se estiver usando uma versão anterior ao Java 11, sugiro que atualize para uma versão mais recente, até mesmo pra conseguir acompanhar todos os passos da formação. Recomendamos que utilize a versão 17 ou alguma superior.

Espero ter ajudado e bons estudos!

Olá Iasmim, verifiquei a minha versão e é a 11.0.19, em tese deveria funcionar né?

Bom dia Laís!

Sim, pelas configurações deveria funcionar... O mais comum de dar errado na compilação é a questão da versão mesmo. Verifica como suas variáveis de ambiente estão configuradas por favor.

Pra isso, você precisa buscar no Windows por "Variáveis de ambiente" e selecionar "Editar as variáveis de ambiente do sistema", e depois clicar em "Variáveis de ambiente". Você tem a variável "JAVA_HOME"? Se sim, qual a versão que aparece nela? Às vezes alguma versão mais antiga está instalada e atrapalhando a utilização da versão 11.

Também verifica a versão que o próprio VSCode tá usando, por favor. Na parte inferior direita, acredito que dê pra visualizar. Aqui pra mim aparece assim:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade