O Eclipse não pode carregar imagens após a exportação de pacote JAR?
A razão para esse problema é principalmente por causa do problema do caminho, que geralmente é executado normalmente no projeto, mas uma vez empacotado em uma jarra, ele não pode ser exibido normalmente. Vamos resumir os métodos para resolver esse problema:
1. Resolva usando arquivos de recursos externos
Depois de embalar o projeto para gerar o JAR, crie uma nova pasta e coloque todos os arquivos de imagem usados no projeto e geraram arquivos JAR neste diretório. Enquanto o código referenciar os arquivos de imagem corretamente, como: imageicon image = new imageicon (swingResourceManager.getImage ("icons/logo.gif");
Dessa forma, o arquivo de imagem e o arquivo de classe não são colocados juntos no pacote. O arquivo de classe está no pacote e o arquivo de imagem está no diretório raiz do projeto.
2. Resolva usando arquivos de recursos internos
Coloque os arquivos de imagem usados no pacote do projeto e, ao embalagem, os arquivos de imagem são inseridos no arquivo JAR ao mesmo tempo. Este método deve usar um dos seguintes no código específico:
Imageicon imagem = new imageicon (this.class.getResource ("icons/logo.gif"));A seguir, é apresentada uma descrição detalhada deste método:
Quando você escreve um programa para interfaces gráficas, você deve usar vários recursos de imagem. Então, quando você publica seu programa, como publica esses recursos de imagem?
A maneira mais simples é empacotar esses recursos de imagem, juntamente com o arquivo de classe em um arquivo JAR executável, para que você precise apenas publicar um arquivo JAR para incluir todo o conteúdo, e os usuários podem executar o programa apenas clicando duas vezes no arquivo JAR. Se você empacotar fotos em um arquivo jar, como você acessa essas fotos ao escrever programas?
Quais são os caminhos para essas fotos? Você pode usar o método getResource () para resolver esse problema.
Aqui analisamos as duas situações mais comuns:
1. Você empacota todos os recursos em Andy.jar, e sua classe está em um pacote: pacote eycpp; Todos os seus recursos de imagem são colocados na pasta Images e a pasta Images também está no pacote AndyCPP. Dessa forma, o caminho final é:
Andy.jar
| __andycpp
| __ Guitest.class
| __ imagens
| __ Snap1.jpg
Como a pasta de imagens e a classe que faz referências estão localizadas no mesmo nível, você pode acessá -la através de um caminho relativo:
java.net.url imgurl = guitest.class.getResource ("imagens/snap1.jpg"); imageicon img1 = new imageicon (imgurl);O que precisa ser dado para a atenção aqui são os problemas de caso! O interior do arquivo JAR é sensível ao maiúsculas, por isso, se a própria imagem for chamada Snap1.jpg e você escrever o caminho para imagens/snap1.jpg, a imagem não será encontrada. Deve -se notar também que cada classe (observe, não um objeto) possui um método getResource (), mas você não pode usá -lo casualmente. Você só pode usar o método getResource () de uma classe que está no mesmo nível da pasta de imagem. Por exemplo, na figura acima, a classe e as imagens do guitestes estão no mesmo nível; portanto, você precisa usar o método getResource () desta classe.
2. Em outro caso, se você tiver muitas aulas e a estrutura do pacote é muito complicada, é improvável que você coloque a foto e a classe no mesmo nível, mas você deve colocar a imagem na camada mais externa e permitir que todas as classes acessem a imagem através de caminhos absolutos:
Andy.jar
| __andycpp
| __ Guitest.class
| __ imagens
| __ Snap1.jpg
O código é o seguinte:
java.net.url imgurl = guitest.class.getResource ("/imagens/snap1.jpg"); imageicon img1 = new imageicon (imgurl);Você viu a diferença do código acima? A diferença é muito sutil. Basta adicionar uma barra de barra "/" Na frente de "imagens". Essa barra de barriga representa o diretório raiz, e nenhuma barra de barriga representa o caminho relativo.
O artigo acima fala brevemente sobre o problema do caminho das imagens de embalagem Java em potes é todo o conteúdo que compartilhei com você. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.