Parece bruxaria nao eh? Funciona legal no IDE ou
rodando pela linha de comando, mas assim que entra num jar, para de
funcionar.
Quase sempre esse eh
um problema com as letras maiusculas e minusculas. Veja se voce
estah colocando o case correto nos nomes dos gifs e jpegs. Por
exemplo, se o arquivo eh OpenIcon.jpeg, tem que passar o nome com o 'O' e
o 'I' maiusculos, e todo o resto minusculo.
Porque isso? Porque dentro de um jar valem as
mesmas regras que valem no programa, ou seja, fica case sensitive. Eh como se
estivesse rodando no UNIX. Na verdade, fora do jar tambem eh assim, soh que o Windows nao eh case sensitive, e
vai interpretar um pedido para o aquivo OpenIcon.jpeg ou openicon.jpeg como se
fosse a mesma coisa.
Esse comportamento pode ter consequencias
intererssantes. Por exemplo.
Imagine que voce tem um arquivo abc.class e
ABC.class no mesmo diretorio (algo totalmente valido em Java e em Unix).
Agora voce encapsula a sua aplicacao num jar e manda para uma maquina
Windows.
Vai rodar direitinho, desde que ninguem tente
"unzipar" o seu jar, porque o windows vai achar que os dois arquivos sao o
mesmo, e uma ClassNotFoundException vai explodir na cara do coitado do
usuario.
Mais um exemplo de que Java foi projetetado para
rodar em Unix, afinal, a SUN eh uma UNIX shop.
Silvio