Jar+jar

Então:

tenho um jar com minha stand alone app, em seu manifest.mf aponto o class-path pra um outro jar de uma aplicação já em produção.

Este outro jar por sua vez, faz carga de alguns xml´s. Aqui começa o problema.

Quando o segundo jar vai carregar o xml com um path config/model.xml por exemplo, ele dá FileNotFoundException, pois ele acha que o config esta no primeiro jar e não no segundo.

Como soluciono isso?

agradecid,

Como é que é carregado o XML, com getClass().getClassLoader().getResourceAsStream() ou com getClass().getResourceAsStream()? Só para a gente se situar.

lembre-se que o caminho padrão dos arquivos em um programa java é o classpath que voce passou no comando java, só que acho que temos um problema:
você está usando o java -jar app.par (assim não dá pra setar o classpath)

creio que para voce conseguir carregar seu xml deverá passar o caminho completo para carregamento do mesmo…

new File(BeanNode.class.getResource(pTemplateFilePath).getFile())

ou

new File(BeanNode.class.getClassLoader().getResource(pTemplateFilePath).getFile())

ambos estão dando erro

Uh, o XML está dentro ou fora do .jar?

[quote=chicocx]lembre-se que o caminho padrão dos arquivos em um programa java é o classpath que voce passou no comando java, só que acho que temos um problema:
você está usando o java -jar app.par (assim não dá pra setar o classpath)

creio que para voce conseguir carregar seu xml deverá passar o caminho completo para carregamento do mesmo…[/quote]

o que vc esta me dizendo é, não colocar o main-class no manifest nem os class-path e sim colocar tudo na linha de execução, é isso?

dentro, pois é duma app q já esta em produção

Se o XML está dentro do jar então você não pode usar “file”. Tem de usar o blablabla.class.getClassLoader().getResourceAsStream(), que lhe retorna uma InputStream. Depois de usar a InputStream, não se esqueça de fechá-la.

P.S. Tinha esquecido que o .jar é “explodido” quando você efetua o deploy de uma aplicação em ambiente J2EE, por isso você até poderia tentar “file” em um ambiente desses. Mas não é tecnicamente o modo certo de pegar algo que está em um .jar, mesmo que ele tenha sido explodido pelo processo de deploy.