Olá galera blz? Peço a ajuda de vocês: não consigo ler uma imagem de dentro de um jar. Rodando pela IDE Funciona blz, mas no jar executavel não.
Já li vários posts sobre esse caso mas ainda não consegui resolver… desse posts, vejo que tenho que usar o tal método getResourceAsStream mas não sei utilizar, já que ele retorna um InputStream que eu não faço idéia do que fazer com ele.
O código que funciona na IDE é esse:
ImageIcon icon = new ImageIcon( getClass().getResource("/imagem/forca00.jpg" ));
lblImagem.setIcon(icon);
Ai vai um exemplo de código…
setIconImage(new ImageIcon(getClass().getResource("/imagen/forca00.jpg")).getImage());
verifique também se o caminho está sendo passado corretamente,
pois as vezes passa despercebido as letras maiúsculas…
espero que ajude…
Então gente, como falei ali em cima, ate funciona se eu rodar a aplicacao pela IDE, o problema é executando o jar.
Abri o .jar para vocês darem uma olhada nos pacotes:
Cara,
Essa pasta com a imagem está dentro do seu jar correto?
Tenta executar seu .jar pelo prompt para ver qual o erro está sendo gerado.
Mas cara, vc tem que observar bem que pela IDE ele enxerga a pasta onde o netbeans está configurada para visualizar os projetos, isso é automático.
Mas quando passa para o jar vc tem que especificar o path da imagem por completo, pois ele não sabe o “caminho” onde o netbeans salva o seu projeto por exemplo.
Por exemplo, eu acesso várias informações dentro de um jar no sistema que tenho aqui, mas preciso sempre passar a url completa como
String caminhoJar = System.getProperty("user.home")+System.getProperty("file.separator")+"Documents"+System.getProperty("file.separator")+nomePasta+System.getProperty("file.separator")+"dist"+System.getProperty("file.separator")+nomeDoJar+".jar";
Depois eu faço o acesso pelo zipEntry
[code]
public void creating(){
try {
ZipFile zipFile = new ZipFile(caminhoJar);
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry) entries.nextElement();
String name = zipEntry.getName();
if (!zipEntry.isDirectory() && name.contains("NOME_DA_PASTA_QUE_EU_PROCURO")){
System.out.println(name);
try{
checkExists();
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Erro ao carregar arquivos do sistema!"+e,"ERRO",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
}[/code]
Espero ter ajudado.
PS: Depois poste aqui o erro que o prompt vai te gerar.(Eu acho que ele não está achando a imagem mesmo)
Abraços
Olá amigo.
Cara que bom!!!
Fico feliz que o código funcionou e te atendeu legal ae, tenho isso e várias outras coisas legais qe tenho em um grande sistema.
Qualquer coisa é só falar que estaremos pronto para te ajudar.
Abraços[]
Fiz exatamente como postaram e mesmo assim a imagem não carrega no meu projeto .jar, na IDE mostra normal, já no jar ainda não consegui, rodei pelo prompt de comando e também não retorna erro algum, o programa esta executando normalmente, somente a imagem não carrega.
segue o trecho onde setei a imagem no jLabel, no projeto criei o pacote imagens e arrastei a imagem para dentro.
Alguem poderia analisar o código e ver onde está o erro?