Pessoal, estou tendo alguns problemas com caminhos (paths) no meu programa.
Primeiramente, peço desculpas se a dúvida é simples, mas procurei no Deitel de java e não achei ainda nada que me ajudasse, esse é meu primeiro semestre vendo Java na faculdade e ainda por cima estou cheio de coisas pra fazer/estudar, então não tem me sobrado muito tempo pra java.
Bom, tenho um projeto criado na IDE Eclipse com a seguinte estrutura:
- blokus
- src
- blokus
- Blokus.java
- Board.java
- ...
- blokus.gui
- BlokusFrame.java
- InitPanel.java
- ...
- blokus.type
- ...
- blokus.img
- seta.png
- logo.png
- ...
Na classe InitPanel.java, preciso criar uma referência a imagem logo.png, que eu coloquei na pasta “blokus”(pasta do projeto)/src/blokus/img/seta.png, como mostrado na estrutura acima.
Tentei fazer de duas maneiras. A primeira foi usando o código:ImageIcon logoIcon = new ImageIcon( "src/blokus/img/logo.png" );
E a segunda foi fazendo:ImageIcon logoIcon = new ImageIcon( getClass().getResouce("../img/logo.png") );
No Eclipse, as duas funcionaram.Depois disso, criei um “.jar” (runnable jar file) do projeto, mas na hora de executar ocorre erro (ele não encontra o arquivo .png).
Considerando o primeiro código, o Eclipse considera como diretório base o diretório do projeto (o blokus mais acima na estrutura de arquivos mostrada). Quando ele exporta o projeto, a pasta base passa a ser o src, logo era para dar erro mesmo.
Mas o segundo código achei estranho dar erro, pois o getClass.getResourse, pelo pouco que eu sei, usa como diretório base o gui (do pacote blokus.gui). Daí, se der um “…”, vou para o diretório blokus, de onde posso dar um “img/logo.png” para obter o arquivo. No Eclipse, tudo as mil maravilhas, mas quando vou executar o jar, dá erro (nullPointerException). Significa que ele não encontrou o recurso e retornou um ponteiro nulo, que vai gerar a exceção quando é passado como parâmetro do construtor de ImageIcon.
Bom, se alguém souber qual o meu erro conceitual, qual a forma CORRETA de se fazer (que venha a dar certo na IDE e no JAR), eu agradeço (afinal, ser obrigado a executar somente no Eclipse, ninguém quer…).Só um pedido: a minha maior preocupação é com o erro conceitual que provavelmente estou fazendo.
- blokus
- src