Como empacotar imagens no arquivo jar

Eu fiz um java application.and empacotado todas as classs no arquivo jar..wen eu executar o projeto do netbeans meu aplicativo está sendo executado com êxito..mas wen eu coloco meu arquivo .jar em outro lugar e executar a partir daí..não estou recebendo os icons usados ​​pelo meu aplicativo .. No código eu recebo meus icons do diretório de imagens presentes na pasta do projeto.

Agora, eu queria saber como podemos apresentar esses arquivos de imagem para o usuário final (como nós apresentamos o arquivo .jar). Obrigado antecipadamente

Parece que há duas perguntas aqui:

  1. Como faço para que o NetBeans inclua um arquivo de imagem no jar produzido quando eu construo meu projeto?

  2. Como faço para acessar um arquivo de imagem de um flask?

Essa resposta se aplica ao NetBeans 6.8 e aborda ambas as subquestões.

Suponha que você tenha um projeto de aplicativo Java baseado em formigas.

Aqui está a visão “Arquivos” do projeto

JP + images + test.jpg + nbproject + src + jp + Main.java + test + build.xml + manifest.mf 

Dentro do seu Main.java você tem código como este:

 public static void main(String[] args) throws IOException { // find the file in the file system.. probably not a good idea File f = new File("images/test.jpg"); System.out.println(f.getCanonicalPath()+" "+f.exists()); 

Quando você executa este projeto de dentro do NB você obtém esta saída:

 /export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true 

Quando você executa o código compactado no jar, você obtém algo assim:

 bash-3.2$ pwd /export/home/vkraemer/nbhg/web-main bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar /export/home/vkraemer/nbhg/web-main/images/test.txt false 

Para obter algo melhor quando o jar é executado, você precisa fazer o seguinte:

Adicione o diretório de imagens como uma raiz de origem para seu projeto .

Clique com o botão direito do mouse no projeto e selecione o item Propriedades. Uma checkbox de diálogo será exibida.

Selecione ‘Fontes’ na lista que está no lado esquerdo da checkbox de diálogo. Isso irá alterar o conteúdo do painel no lado direito da checkbox de diálogo.

Pressione o botão “Adicionar pasta …” que aparece ao lado da tabela “Pastas de pacotes de origem”. Um FileChooser aparecerá.

Utilize este seletor para selecionar a pasta de imagens e pressione o botão OK. Uma input para a pasta de imagens será adicionada à tabela.

Use o botão OK na checkbox de diálogo Propriedades do projeto para aceitar as alterações e descartar o diálogo.

Altere seu código para usar Class.getResource () .

 public static void main(String[] args) throws IOException { // find the file in the file system.. probably not a good idea File f = new File("images/test.jpg"); System.out.println(f.getCanonicalPath()+" "+f.exists()); URL url = Main.class.getResource("/test.jpg"); System.out.println(url); 

Quando você executa o projeto de dentro do IDE, você deve ver algo como isto:

 /export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg 

Quando você executar o código compactado no jar, você terá algo assim:

 bash-3.2$ pwd /export/home/vkraemer/nbhg/web-main bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar /export/home/vkraemer/nbhg/web-main/images/test.jpg false jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg 

Depois de obter o URL do arquivo test.jpg, você pode usar o ImageIcon (URL) para criar o ícone

Para um projeto Maven no NetBeans 6.9, coloque seu arquivo em Recursos na pasta “Outras origens” do Projeto.

E certifique-se de que você não esquece o líder “/”