getResourceAsStream não funciona fora do ambiente de desenvolvimento

Amigos,

Inclui dentro de uma aplicação feita no netbeans um arquivo xml para que, ao ser gerado o arquivo .jar, o arquivo xml esteja interno a ele.

O código abaixo funciona perfeitamente dentro do netbeans, porém, após construir o .jar e executá-lo por fora do ambiente de desenvolvimento, a variável isArquivoXML recebe null.

InputStream isArquivoXML = this.getClass().getClassLoader().getResourceAsStream(File.separator + "XML" + File.separator + nomeArquivo + ".xml");

Alguém consegue ajudar a esclarecer essa questão?

Abra o Jar gerado e veja se o arquivo está realmente lá.

[quote=tveronezi]Abra o Jar gerado e veja se o arquivo está realmente lá.
[/quote]

Eu abri o Jar e o arquivo está lá sim (dentro de uma pasta chamada XML).

[quote=andredf]Amigos,

Inclui dentro de uma aplicação feita no netbeans um arquivo xml para que, ao ser gerado o arquivo .jar, o arquivo xml esteja interno a ele.

O código abaixo funciona perfeitamente dentro do netbeans, porém, após construir o .jar e executá-lo por fora do ambiente de desenvolvimento, a variável isArquivoXML recebe null.

InputStream isArquivoXML = this.getClass().getClassLoader().getResourceAsStream(File.separator + "XML" + File.separator + nomeArquivo + ".xml");

Alguém consegue ajudar a esclarecer essa questão?

[/quote]

Estranho. Tente remover o getClassLoader e dá uma lida no método na Class.

InputStream isArquivoXML = this.getClass().getResourceAsStream(File.separator + "XML" + File.separator + nomeArquivo + ".xml");

[quote=nel][quote=andredf]Amigos,

Inclui dentro de uma aplicação feita no netbeans um arquivo xml para que, ao ser gerado o arquivo .jar, o arquivo xml esteja interno a ele.

O código abaixo funciona perfeitamente dentro do netbeans, porém, após construir o .jar e executá-lo por fora do ambiente de desenvolvimento, a variável isArquivoXML recebe null.

InputStream isArquivoXML = this.getClass().getClassLoader().getResourceAsStream(File.separator + "XML" + File.separator + nomeArquivo + ".xml");

Alguém consegue ajudar a esclarecer essa questão?

[/quote]

Estranho. Tente remover o getClassLoader e dá uma lida no método na Class.

InputStream isArquivoXML = this.getClass().getResourceAsStream(File.separator + "XML" + File.separator + nomeArquivo + ".xml");

Eu troquei o File.separator por “/” e funcionou.
É mole?

Aí fica uma dúvida: dessa forma funcionará em qualquer plataforma?

Faltou ler isso no javadoc:

Entendo que funciona em todos os sistemas, então.

to com o mesmo problema
e para funcinar com File.separator = “” vc conseguiu?

Que eu saiba, dentro de um getResourceAsStream, você obrigatoriamente tem de usar “/” para separar os componentes, não File.separator, porque getResource não está pegando um arquivo (FileInputStream), e sim descompactando um recurso do JAR.