[RESOLVIDO] NullPointerException AWT EventQueue ao carregar um ImageIcon em uma JLabel?

15 respostas
programaçãojava
nicolasfcunha

Boa tarde pessoal.

Estava trabalhando no desenvolvimento em uma tela do front-end de um TCC de um curso meu através do construtor de JFrames no NetBeans (8.2), selecionei algumas imagens e as coloquei em um JLabel, mas ao iniciar o sistema, são lançadas exceções quanto ao getResource(), código que é gerado automaticamente pelo construtor de interface gráfica.
O que mais me incomoda é que até alguns dias atrás, telas que não foram modificadas funcionavam corretamente, e agora não funcionam mais.
Antes que respondam com que o problema é o caminho da imagem, os arquivos foram selecionados pelo construtor de interface gráfica.
Segue o link de um pequeno álbum no imgur com screenshots do problema, do código e do pacote das imagens que são utilizadas, já que não posso dar upload em mais de um arquivo aqui.

Agradeço desde já.

15 Respostas

Jonathan_Medeiros

Posta o código que tu tá usando pra carregar o ícone no JLabel!

Ps: não use print de imagens, cole seu código aqui e formate o mesmo clicando sobre o botão < / >

nicolasfcunha

Boa tarde. Segue o código.

labelLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/logoSemEscrita.png"))); // NOI18N

jPanel1.add(labelLogo, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 50, -1, -1));
Jonathan_Medeiros

Código gerado direto pelo netbeans ?

Se for, remova a imagem, salve, execute o projeto, depois insira a imagem novamente, salve e execute!

As vezes acontece do netbeans se perder, e o simples fato de remover e adicionar novamente faz com que o problema seja corrigido!

nicolasfcunha

Boa noite.

Fiz o instruído, mas, sem sucesso. Alguma outra alternativa?

Jonathan_Medeiros

Quando tu remove o projeto funciona normalmente ?

nicolasfcunha

Imagino que queira dizer a imagem? Se sim, correto, funciona normalmente. O problema existe em todas telas que usam ícones.

staroski

Tem certeza que a pasta imagens está no classpath da sua aplicação?

Jonathan_Medeiros

Blz, então tenta excluir as imagens dentro do diretório resources do seu projeto e adicione novamente!

Caso não funcione, atribua as imagens via código no construtor da classe!

nicolasfcunha

Caso não funcione, atribua as imagens via código no construtor da classe!

Tentei fazer isso mais cedo, não funcionou.

Blz, então tenta excluir as imagens dentro do diretório resources do seu projeto e adicione novamente!

No caso, meu projeto não tem uma pasta resources definida. As imagens ficam localizadas em um pacote ‘imagens’ no src, assim como pacote ‘view’, que possui as telas.

nicolasfcunha

O pacote que contém as imagens está no mesmo diretório do que contém as telas, ambos no ‘src’.

staroski

O getResource retorna um objeto URL.
Substitua por getResourceAsStream:

InputStream input = getClass().getResourceAsStream("/imagens/logoSemEscrita.png");
Image image = ImageIO.read(input);
labelLogo.setIcon(new ImageIcon(image));
nicolasfcunha

Sem sucesso. O método getResourceAsStream() também retorna null.

Usei o seguinte código para criação do ícone:

InputStream inp = getClass().getResourceAsStream("/imagens/logoSemEscrita.png");
Image icone = null;
try{
            icone = ImageIO.read(inp);
}catch(Exception e){
            e.printStackTrace();
}
labelLogo.setIcon(new ImageIcon(icone));

Ao imprimir o método getResourceAsStream() no construtor, ele confirma o null.

System.out.println(getClass().getResourceAsStream("/imagens/logoSemEscrita.png"));

nicolasfcunha

Consegui resolver o problema. Creio que não seja a melhor solução, mas a opção de “Limpar e construir” do NetBeans resolveu o problema.

staroski

Então suas imagens não estão no classpath quando sua aplicação está executando, simples assim.

marcoslogan

Estou com o mesmo problema. Já tentei de tudo e continua dando erro. Ele não encontra a foto de jeito nenhum. Isso nunca me aconteceu.

Criado 21 de agosto de 2018
Ultima resposta 20 de jan. de 2020
Respostas 15
Participantes 4