Estou com um probleminha aqui, recentemente resolvi voltar pro swing (só para praticar mesmo), coloquei uma imagem no projeto e setei no JLabel, só que tá dando uma NullPointerException. Coloquei a imagem dentro de uma pasta, deu o mesmo problema, e até na mesma pasta, o resultado foi o mesmo. Fiz uma pesquisa e não encontrei a solução. Estou usando o Java 16 e o NetBeans 12.5.
PS: Criei o projeto com o Ant. Por exemplo no NetBeans 8.2, não tenho esse tipo de problema. Acho que deve ser algum bug do NetBeans ou do Java.
Será que o NullPointer não está acontecendo pq a imagem não está sendo encontrada no classpath?
marcoslogan
Tenho que criar o ClassPath do Java para fazer funcionar? Em versões anteriores eu não tinha necessidade de fazer isso.
staroski
Não.
Classpath é o caminho onde sua aplicação procura as classes para carregar, você só tem que garantir que sua imagem está no classpath de sua aplicação.
Posta o código de como você está carregando a imagem.
Está usando o getResourceAsStream?
marcoslogan
Estou fazendo pelo NetBeans. No caso é o próprio NetBeans que gera o código. Eu só indico onde está o arquivo.
marcoslogan
Não estou usando o get ResourceAsString. Estou usando o ImageIcon. Para isso passo o getClass().getResource(“imagem.jpg”). O NetBeans gera esse código.
Lucas_Camara
Vc consegue mandar a estrutura de pastas do seu projeto indicando a pasta onde a imagem está?
staroski1 like
Troca por getClass().getResourceAsStream("/imagem.jpg"), senão não vai funcionar quando você gerar um JAR.
Perceba o / no início do caminho, isso garante que a busca é feita a partir da raíz do classpath de sua aplicação.
Programadores escrevem código muito melhor que o NetBeans.
marcoslogan
No momento estou em outro computador, mas sei a estrutura de pastas. No projeto estou desenvolvendo usando o MVC, todas as telas do sistema estou deixando dentro do pacote view. Dentro desse pacote criei uma pasta img e copiei a imagem para lá. E através do NetBeans indiquei onde o arquivo estava, não deu certo, logo em seguida, coloquei o código no construtor da classe, o programa executou normalmente mas não apareceu nenhuma imagem. Só dá problema quando coloco através do NetBeans, que ele gera o código, se você colocar programaticamente não dá erro, mas a imagem não é exibida.
Então eu resolvi copiar as imagens e colocar direto na pasta/pacote view. Fiz pelo help do NetBeans e deu a mesma exceção, ele não consegue localizar o arquivo.
marcoslogan
Deu pra entender? Ou ficou muito vago?
staroski1 like
Então o caminho vai ser getClass().getResourceAsStream("/view/img/imagem.jpg")
marcoslogan
Verdade. Mas você sabe me dizer o porquê que o NetBeans está fazendo isso? Pois tenho aqui nesse computador o NetBeans 8.2 com o Java 8. Tenho um projeto que utilizo o helper do NetBeans e não dá essa exceção.
staroski
Não sei, não uso NetBeans, nunca me acostumei com o jeito engessado dele e olha que venho testando desde 2002, até cheguei a usar as derivações dele como o Forté for Java e o Sun One Studio.
j-menezes
Mas a partir do Java 9 é modularizado.
Se quer usar o Java 16 e rodar programas do Java 8 é preciso colocar o
–add-modules na chamada.
Isso não é erro nem do Java nem do NetBeans.
Qualquer coisa posta seu codigo aqui.
T
Trapezus
Não é falha do NetBeans.
O arquivo da imagem foi indicado para o jLabel, mas deve ter mudado o local físico do arquivo ou renomeado.
marcoslogan
Estou usando o Java 16, e baixei a versão mais recente do NetBeans, não estou usando o Java 8. Estou querendo usar as versões mais recentes, principalmente do JavaFX.
marcoslogan
Eu não mudei o arquivo, está numa pasta.
j-menezes
Mas o projeto em sí está usando qual JDK ? (Basta entrar em “Propriedades” do Projeto)
E tambem JLabel é do Swing e não do JavaFX
marcoslogan
Estou usando o JDK Versão 16.
marcoslogan
Não pegou. Fica dando NullPointerException. Que absurdo. Pra que vão mudar?
j-menezes
Isola o problema em um programa pequeno e posta aqui , assim da pra dar uma olhada na pratica.
marcoslogan
Vou postar o código aqui.
O código abaixo está num splash form que estou criando.
Já tentei de todas as formas. Se eu colocar através do Helper do NetBeans dá o mesmo erro. Então coloquei programaticamente e o resultado é o mesmo.
j-menezes
Voce fez o que Eu mesmo pedi, mas se puder facilitar ainda mais, poderei ver na integra.
Então sugiro
Cria um projeto novo no NetBeans, entao faça uma tela e coloca esse JLabel com o icone.
Em seguida posta esse projetinho inteiro do NetBeans zipado.
File >> Export Project >> To Zip
Assim fica mais facil reproduzir e ver o problema e quem sabe resolve-lo.
marcoslogan
Blz.
staroski
View é um pacote?
Põe o / na frente do caminho, para buscar a partir da raíz do classpath.
marcoslogan
Já tentei de tudo e sempre dá erro. Já coloquei na mesma pasta, coloquei em outra pasta e ele não consegue encontrar o arquivo. Meu Deus, o que foi que fizeram?