.jar + Caminho relativo

4 respostas
J

Tenho um .xml dentro de um .jar no meu classpath. Como recuperar o caminho relativo desse .xml ??

valeu !!

4 Respostas

Y
getClass().getResource("/pasta/onde/esta/seu/arquivo.jar");

flw

Y

ops

getClass().getResource("/pasta/onde/esta/seu/arquivo.xml");

agora sim
flw

Thiago_Senna

Cara… é meio embaçadinho… um amigo meu uma vez fez algo mais ou menos assim…

URL url = MinhaClasset.class.getResource(fileName);

if (url.getProtocol().equals("jar")) {
    InputStream input = MInhaClasse.class.getResourceAsStream(
            fileName);
    
} else {
    File f = new File(url.getFile());
   
}

Nesse caso acima, a MinhaClasse é a classe na qual você está editando o código… Olha… sinceramente naum sei muito como que funciona isso… Mas daí vc já pode tirar uma idéia de como resolver o problema…

Repare que quando você executa a aplicação fora de um arquivo jar, normalmente o caminho do arquivo, quando for uma url, ela utiliza o protocolo file… ex:
file:\c:\meudocumento.xml

Agora, quando se trata de um arquivo que se encontra dentro de um jar, é um pouco diferente… o protocolo é o jar…
ex:
jar:\file:\c:\meuarquivo.jar!meudocumento.xml!!!
(Não é exatamente isto… mas é algo parecido com isso)

Repare nos protocolos files e jar… eles são a chave para que você resolva o problema…

Se alguém tiver alguma solução melhor, será bém vinda… pois eu acho essa solução que passei péssima!!

Um Abraço!
Thiago Senna

J

yuusuke_urameshi2:
ops

getClass().getResource("/pasta/onde/esta/seu/arquivo.xml");

agora sim
flw

Cara minha estrutura está assim : O projeto foi criado na pasta Material e lá existe a pasta lib onde está meu .jar.

Material/ lib/ pacote.jar

E no pacote .jar está assim ;

relatorios/almoxarifado/ arquivo.xml

Eu coloquei assim :

String caminho = getClass().getResource("/lib/relatorios/almoxarifado/arquivo.xml").getPath();

Mas não deu certo !!!
tu sabe o q ta errado ?/
Acho q dá forma que eu estou tentando acessar era se o meu arquivo.xml estivesse no diretorio relatorios/almoxarifado/ , no entanto ele está dentro de .jar no meu classpath !!

Criado 18 de fevereiro de 2005
Ultima resposta 18 de fev. de 2005
Respostas 4
Participantes 3