Ajuda com JAR

Pessoal, sei que esse assunto do jar foi bastante discutido aqu no forum, mas estou tendo alguns problemas e gostaria da ajuda de vcs.

vamos lá:
Sei que para criar o jar eu preciso do MANIFIEST.MF.
Preciso usar o comando: jar cvfm nomeDoMeuJar.jar * MANIFEST

Minha aplicação utiliza alguns ícones e também outros jars (j2ee.jar, servlet.jar).
Meu MANIFEST.MF esta da seguinte maneira:

Manifest-Version: 1.0
Main-Class: meupacote.TelaPrincipal
Class-Path: j2ee.jar javax.servlet.jar


No meu código java onde utilizo os icones estou fazendo da seguinte maneira
ex:
… new ImageIcon(System.getProperty(“user.dir”) + “//imagens//general//New.gif”);

Acredito que o System.getProperty(…) não vá conseguir achar as imagens dentro do jar.

Então hoje estou tendo 2 problemas.
1 - O programa roda, mas as imagens não aparecem.
2 - O programa roda, mas os outros jars que ele utiliza ele não consegue pegar de dentro do jar, fazendo com que eu tenha que colocar esses jar que ele não consegue encontrar no mesmo diretorio do jar da minha aplicação que eu criei.

O que esta faltando para eu criar o jar corretamente e/ou onde estou errando ?

obrigado.
mindu.

O problema com as imagens eu resolvi com:

// Get current classloader
ClassLoader cl = this.getClass().getClassLoader();
// Create icons
Icon saveIcon = new ImageIcon(cl.getResource(“images/save.gif”));
Icon cutIcon = new ImageIcon(cl.getResource(“images/cut.gif”));

Mindu,
Para você usar suas imagens o mais certo é utilizar o ClassLoader como você utilizou, mas se você acha melhor grava os arquivo como temporário e depois de executar seu programa aponta para que o programa delete este arquivo.
Agora com relação dos seus jars tem que ser assim mesmo. Eu faço o seguinte: Onde eu coloco os meus executáveis crio uma pasta, por exemplo, chamada “Aplicacoes”. Dentro desta pasta eu coloco todos os meus programas. Nesta pasta crio outra chamada “lib” e lá coloco todos os jars que o java não encontra e que eu utilizo e até separo (crio uma pasta chamada “api” e coloco todos os jars que eu utilizo que são referentes a api lá, crio uma pasta “jasper” e coloco todos os jars que eu utilizo refente ao jasperReports e assim por diante…).
Realmente o que você pode fazer com os jars é organizá-los para ficar bem organizados.

Espero ter te ajudado,

Então se minha aplicação utiliza outros jars eu tenho que coloca-los dentro do jar da aplicação ou no mesmo diretório que está o jar da aplicação ?

Vc tem que colocar no mesmo diretorio e declará-lo no Manifest.mf …
Por exemplo:
Abaixo esta seu jar:

Manifest-Version: 1.0 
Main-Class: meupacote.TelaPrincipal 
Class-Path: j2ee.jar javax.servlet.jar 

E vc tem um jar com o nome Validacoes.jar e você irá utilizar a mesma pasta que esta o seu programa, então vc coloca assim no Manifest.mf…

.....
Class-Path: Validacoes.jar   ................
.....

Agora se você criar uma pasta com o nome “lib” dentro do diretório que esta o seu programa, você coloca assim no Manifest.mf …

.....
Class-Path: lib/Validacoes.jar   .................
.....

Se vc não entender me avise,

Entendi, fiz o teste e funcionou.

Eu pensava que colocando os jars dentro do jar principal eu não precisaria colocar no mesmo diretório, usando um único arquivo (jar).

obrigado.
mindu.

De nada, qualquer coisa grite !!
Falow.

Aproveitando este assunto:
Tenho uma aplicação, fiz ela sem ser em JAR, e gostaria de montá-la em JAR agora.
O problema é que parte dela faz procura em um diretório para que o usuário escolhe um dos arquivos. Utilizei o FileChooser, mas como o diretório está localizado do JAR agora, o FileChooser dá problema. Tem como eu fazer isso ???
Tem como dinamicamente adicionar arquivos no JAR ?
Abraços,

Pessoal,
Me intrometento no assunto aqui, tenho uma aplicação que utiliza 2 [color=“orange”]JARs[/color]: [color=“red”]lib1.jar[/color] e [color=“red”]lib2.jar[/color]
Criei um diretório chamado extralibs e coloquei os 2 jars lá. Eles são incluídos no meu [color=“red”]aplicacao.jar[/color].
No meu MANIFEST eu coloco:

Class-Path: ./ ./extralibs/jar1.jar ./extralibs/jar2.jar

Pergunta 1:
Se eu tirar o ./ minha aplicação não funciona. Porque ??? Dá sempre NullPointer Operation. Colocando o ./ no classpath funciona perfeitamente.

Pergunta 2:
Minha aplicação não consegue encontrar os [color=“orange”]JArs[/color] no meu extralibs, com ou sem o ./ . porque ? Não funciona se estiver incluído no meu jar ???
Abraços…