Estou gerando o JAR da minha aplicação, mas estou perdendo minhas imagens, como faço para gerar o JAR e não perder as imagens?
Abaixo segue um exemplo de código, de como estou manipulando as minhas imagens no código:
buttonAbrir = new JButton(new ImageIcon("img/img_abrir_40x40.png"));
Estou criando um diretório “img” na raíz do meu projeto e a partir daí, referencio todas minhas imagens. Quando executo o programa pelo Eclipse, funciona belezinha, mas quando gero o .JAR, ele perde as imagens.
Alguém tem alguma dica sobre o que pode estar acontecendo?
Eu já havia utilizado o método getResourceAsStream(end), o meu problema é que ele gera uma excessão dizendo que o ponteiro que estou passando está nulo, como se ele não encontrasse a imagem ou como se o caminho estivesse errado, mas eu já verifiquei essas duas coisas e elas estão corretas.
O que pode ser???
kra, é muito fácil. Coloque as imagens no mesmo pacote (pasta) que estão os seus arquivos .class que vão usa-las. Dentro do seu código, declare o caminho delas como imagem.jpg e não C:\pasta\imagem.jpg
Aí é só criar o jar (e adicione as imagens a ele também) e pronto!
Pra ficar uma coisa mais organizada, voce pode simplesmente adicionar sua pasta img/ ao classpath da aplicação.
Daí pra carregar voce faz via classloader, de, por exemplo, uma classe helper.
Suponha que voce faz sua classe ResourceLoader que possui um metodo de carga de recursos do classpath. Voce chamaria por exemplo o metodo load(“nome do arquivo”) do objeto dessa sua classe.
Sua classe carregaria via getClass().getClassLoader().getResourceAsStream(“nome do arquivo”);
Dessa forma o codigo fica mais elegante, portavel e independente de pasta no seu HD. A principal vantagem de carregar via ClassLoader e nao via getClass().getResourceAsStream é que o classloader procura no classpath, enquanto que o getClasse nao (ate onde eu sei, esse metodo da classe Class só procura na pasta onde está seu .class, e fazer essa mistureba de .class com imagens e mais qualquer coisa que voce queira carregar não é legal)