Eclipse exportado JAR Runnable não mostrando imagens

Minhas imagens não serão carregadas ao executar um arquivo JAR exportado do Eclipse.

Eu tenho as imagens em um pacote de class de resources. Eu tentei uma pasta de origem de imagens, bem como sem sorte.

Funciona perfeitamente quando carregado a partir do Eclipse. As imagens estão no arquivo JAR exportado, então elas estão exportando bem.

Eu tentei:

label.setIcon(new ImageIcon(MainFrame.class.getResource("/resources/header.jpg"))); 

Eu também tentei:

 URL url = getClass().getResource("/resources/header.jpg"); Image image = Toolkit.getDefaultToolkit().getImage(url); label.setIcon(new ImageIcon(image)); 

E:

 try { label.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("/resources/header.jpg")))); } catch (IOException e1) { e1.printStackTrace(); } 

Alguma sugestão?

    Funciona bem para mim. Verifique o que você pode ter diferente.

    Exemplo 1: (resources em src)

    Passos:

    1. Estrutura de arquivos

      insira a descrição da imagem aqui

    2. Código

       package com.stackoverflow.test; import java.net.URL; import javax.swing.*; // Wild carded for brevity. // Actual code imports single classs public class Main { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void run() { URL url = Main.class.getResource( "/resources/stackoverflow.png"); ImageIcon icon = new ImageIcon(url); JFrame frame = new JFrame(); frame.add(new JLabel(icon)); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } } 
    3. [Clique com o botão direito no projeto] → [Exportar] → [Arquivo Jar Runnable] → [Configurar o Launch]

      insira a descrição da imagem aqui

    4. Lucro

      insira a descrição da imagem aqui

    FYI, a mesma configuração é executado no eclipse muito bem também


    Exemplo 2: (resources não em src – mas em projeto)

    Passos:

    1. Estrutura de arquivos (os resources de aviso parecem com uma pasta simples)

      insira a descrição da imagem aqui

    2. O que temos que fazer agora é colocar os resources no caminho de construção. O que isto faz é colocar tudo na pasta (excluindo a própria pasta) no caminho de class

      • Clique com o botão direito no projeto e vá para [Build Path] → [Configure Build Path]

        insira a descrição da imagem aqui

      • Na guia [Fontes] da checkbox de diálogo, selecione [Adicionar pasta] e, na nova checkbox de diálogo, selecione a pasta [resources]

        insira a descrição da imagem aqui

      • Agora o conteúdo da pasta de resources está no caminho de construção (observe o pequeno pacote na pasta agora

        insira a descrição da imagem aqui

    3. Novo código não usa mais o prefixo de resources para o caminho

       URL url = Main.class.getResource("/stackoverflow.png"); 
    4. O mesmo que os passos 3 e 4 de cima e lucro!


    ATUALIZAR

    Configurando a Configuração de Lançamento

    Geralmente, depois de executar a class (isto é, clique com o botão direito do mouse na class e em Executar como aplicativo Java), uma configuração de execução será configurada. Você precisará disso para definir o ponto de lançamento no manifesto. Mas aqui está como fazer isso manualmente.

    Passos:

    1. [Right Click Project] → [Propriedades] → [Executar / depurar configurações]

      insira a descrição da imagem aqui Você pode ver que eu já tenho uma confirmação de execução (que é implicitamente definida simplesmente executando a class). Mas para criar um novo, selecione [Novo] → [Aplicativo Java]

    2. Crie um nome para a configuração de execução e procure ou digite uma class de boot principal. No meu caso, é a class com.stackoverflow.test.Main

      insira a descrição da imagem aqui

    3. Agora, quando você exporta como mostrado no exemplo acima, você seleciona a configuração de execução

      insira a descrição da imagem aqui

    4. Execute o jarro como acima.


    EDITAR

    Resultado para verificar

    Manifesto:

     Manifest-Version: 1.0 Rsrc-Class-Path: ./ Class-Path: . Rsrc-Main-Class: com.stackoverflow.test.Main Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 

    Jarra extraída:

    insira a descrição da imagem aqui

    Eu achei que quando você mudou:

    Pacote necessário bibliotecas em jar gerado

    para

    Extrair bibliotecas necessárias no jar gerado

    na configuração Configurar o Launch funcionou para mim.

    Botão Extrair Bibliotecas Necessárias

    Para criar um arquivo JAR executável a partir do Eclipse, podemos nos referir ao artigo “Criando JARs Executáveis ​​no Eclipse (ou outro IDE … ou manualmente):” ( https://www.cefns.nau.edu/~edo/Classes /CS477_WWW/Docs/RunnableJarsinEclipse.html ), mencionou que precisamos fazer quatro coisas como

    1. Certifique-se de criar um pacote para o nosso código, não apenas criar um projeto no Eclipse
    2. Crie o subpacote (subpasta) para nossos arquivos de resources sob o pacote principal do nosso código (observe que o sub-pacote está no pacote principal, não está apenas no projeto)
    3. obter todas as referências de arquivo de getResource () (obtendo a referência de URL)
    4. Exportação de arquivos como um JAR executável no Eclipse (Arquivo -> Exportar … -> selecione Arquivos JAR Executáveis ​​-> próximo -> …)

    Mas para o arquivo de imagem no código de exemplo do artigo acima, ele cria apenas o ImageIcon, ele não cria a imagem SWT e há muitas perguntas na Internet sobre como obter a imagem SWT do URL ou como converter ImageIcon em SWT Image, abaixo está o código de exemplo para obter a imagem SWT do URL,

     Image imgSWT=null; // Image class is the SWT Image class ImageDescriptor imgDesc=null; java.net.URL imgURL = YourClassName.class.getResource("path/image_filename"); if (imgURL != null) { imgDesc = ImageDescriptor.createFromURL(imgURL); imgSWT = imgDesc.createImage(); } 

    O problema era que eu tinha esse projeto no meu perfil do Windows … que tinha um “!” nela … (DeNitE! -> era o nome do meu perfil do Windows)

    Assim que eu mudei para DeNitE (sem o!) Funcionou bem …

    Outra solução é se você colocar seu arquivo de recurso, um arquivo .jar no mesmo local, ele deve funcionar. A única desvantagem é que você tem que ter os resources com o arquivo jar em todos os momentos.

    Se isso não é um problema, você pode fazer isso dessa maneira.

    Eu tenho mesmo problema .. Você pode usar isso ..

     Image Icon= new ImageIcon(new WE4().getClass().getResource("IC.jpg")) 

    Aqui WE4 é o nome do meu construtor de class. Espero que ajude.

    A menos que você tenha arquivos no jar, esta é provavelmente a maneira mais simples de fazê-lo:

    header = ImageIO.read(new File("./resources/header.jpeg"));

    header tem que ser um Image / BufferedImage. Isso vai para a pasta em que o jar runnable está e procura uma pasta chamada resources. http://i.stack.imgur.com/x8xtO.png

    Dois passos simples:

    1 – Adicione a pasta ao caminho de compilation;

    2 – Use isto:

      InputStream url = this.getClass().getResourceAsStream("/load04.gif"); myImageView.setImage(new Image(url));