Galera,
Tenho um jar e dentro dele tenho uma pasta. Preciso recuperar a string relativa ao path dessa pasta dentro do jar. Na verdade a questão e mais complicada, vamos ver se alguem consegue me ajudar.
meujar.jar
-------- arquivo1.xml
-------- arquivo2.txt
-------- pasta
---------------- sistema.jar
---------------- lib
------------------------ swt.jar
------------------------jax.jar
Seguinte, meu jar tem uma estrutura + ou - como essa. O que eu pretendo fazer é pegar o path no caso até a pasta. Depois precisarei executar esse sistema.jar a partir da minha aplicação. Minha intenção é depois de conseguir esse path, fazer algo como Runtime.exec(“java -jar c:/path_recebido/sistema.jar”).
Deu pra enteder? Será possível?
Valeussss!!!
Boa noite, não sei se entendi direito, mas vai a sugestão:
Acho que para dar certo você vai ter que fazer o seguinte, recuperar o path atual de onde seu jar principal está sendo executado, caso ele seja o jar que contém o main da sua aplicação, você pode usar esse método System.getProperty(“java.class.path”) para recuperar o caminho dele. A partir dai você pode criar um JarFile, passando a string recuperada do método anterior. Você vai precisar de um InputStream para carregar o jar que está dentro do jar principal, você pode fazer assim:
JarFile jarFile = new JarFile(System.getProperty(“java.class.path”));
InputStream inputStream = jarFile.getInputStream(“estrutura/interna/do/diretorio/para/jar.jar”);
A partir dai é só escrever o inputStream para um arquivo (pode ser na pasta temporária por exemplo: System.getProperty(“java.io.tmpdir”)) e carregar ele. Use as classes do pacote java.io para escrever o jar, ou, use as classes do pacote java.nio.channels, elas tambem são bem legais para trabalhar.
Acho que dessa forma pode dar certo !
Boa sorte !
O mais simples seria distribuir o sistema.jar fora do seu jar, dessa forma não precisaria colocar ele no temp como sugere o Fernando.