Acesso a arquivos no .jar

4 respostas
tspaulino

Boa tarde colegas,

Desde já peço desculpas se este tópico estiver duplicado, mas ainda não consegui resolver o meu problema com o material disponível no fórum (e já estou lendo posts aqui há 2 dias).

Estou tentando fazer a leitura dos dados que estão em arquivos XML no meu .jar, mas recebo a seguinte mensagem de erro quando inicio a aplicação:

java.io.FileNotFoundException: file:\C:\Migra%c3%a7%c3%a3o%20BD's\DataImporter.jar!\com\br\siaconsultoria\importData\xml\AD_ALERT.xml (A sintaxe do nome do arquivo, pasta ou nome do volume está incorreta)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileReader.<init>(Unknown Source)
	at com.br.siaconsultoria.importData.ImportData.importData(ImportData.java:72)
	at com.br.siaconsultoria.importData.ImportData.importDataBase(ImportData.java:56)
	at com.br.siaconsultoria.importData.ImportData.main(ImportData.java:151)
	at com.br.siaconsultoria.teste.Main.main(Main.java:8)

Alguém aqui já passou por algum problema parecido pode me ajudar??

Abraço a todos,

Tiago Paulino

4 Respostas

lcegatti

Se o seu arquivo xml estiver no mesmo pacote de sua classe que tenta o ler, vc pode fazer assim:

InputStream is = this.getClass().getResourceAsStream("meuArquivoXML.xml");

Caso ele esteja em outro caminho vc começar a busca a partir do src:

InputStream is2 = this.getClass().getClassLoader().getResourceAsStream("/minha/pasta/meuArquivoXML.xml");

Depois vc testa assim pra ver se funfa.

[]'s

tspaulino

lcegatti:
Se o seu arquivo xml estiver no mesmo pacote de sua classe que tenta o ler, vc pode fazer assim:

InputStream is = this.getClass().getResourceAsStream("meuArquivoXML.xml");

Caso ele esteja em outro caminho vc começar a busca a partir do src:

InputStream is2 = this.getClass().getClassLoader().getResourceAsStream("/minha/pasta/meuArquivoXML.xml");

Depois vc testa assim pra ver se funfa.

[]'s


Certo, mas eu preciso passar esse InputStream para um objeto do tipo File para ser trabalhado na minha app…
Tem alguma sugestão???

T

Você precisa então extrair o arquivo, usando ZipInputStream/ZipFile (no pacote java.util.zip.)

Ou então mudar a tal rotina que espera um File, para que ela use uma InputStream.

tspaulino

Fiz umas adaptações aqui e o problema está resolvido!
Solução:

Passar o InputStream e fazer o tratamento dele dentro do método criando um InputStreamReader:

//Fiz a adaptação porque perdia os dados na hora de fazer a leitura do InputStream
    InputStreamReader data= new InputStreamReader(xml);

Obrigado a todos pela ajuda!!

Criado 10 de outubro de 2008
Ultima resposta 10 de out. de 2008
Respostas 4
Participantes 3