[RESOLVIDO]Problemas com Leitura de arquivo

6 respostas
java
V

Boa dia a todos, estou trabalhando em uma aplicação que faz a leitura de um xml que se encontra no resources. O problema é que ela não consegue ler quando eu gero o executável, ele só é lido quando eu rodo no eclipse. alguém sabe o que pode ser?

Código de leitura

public Downloader getXmlClient(String userID) {
	try {
		XStream xstream = new XStream();
		xstream.processAnnotations(Downloader.class);
		FileReader reader = new FileReader(
				ClassLoader.getSystemResource("cli/" + userID + ".xml").getFile().replace("%20", " "));
		Downloader down = (Downloader) xstream.fromXML(reader);
		return down;
	} catch (Exception e) {
		e.printStackTrace();
		return null;
	}
}

Mensagem de erro

java.io.FileNotFoundException: C:\Area de Trabalho\Instalador.jar!\cli\2.xml (O sistema não pode encontrar o caminho especificado)

at java.io.FileInputStream.open0(Native Method)

at java.io.FileInputStream.open(FileInputStream.java:195)

at java.io.FileInputStream.(FileInputStream.java:138)

at java.io.FileInputStream.(FileInputStream.java:93)

at java.io.FileReader.(FileReader.java:58)

at com.agfa.installerhcis.xml.ReadConfigurationFile.getXmlClient(ReadConfigurationFile.java:33)

at com.agfa.installerhcis.xml.ReadConfigurationFile.main(ReadConfigurationFile.java:26)

6 Respostas

A

Tem esse XML nesse caminho? Exatamente nesse caminho?

V

O XML está dentro do executável que está neste caminho.

A

É que fiquei encucado com esse [!] que está alí depois do .jar no nome do arquivo. Nunca havia visto isso.

D

Tente assim:

FileReader reader = new FileReader(
new File(getClass()
.getResource(“file.txt”));

Esse [!] significa que ele está buscando dentro do jar.

A

Valeu @denis_arruda. Estava por fora desse [!].:wink:

V

@denis_arruda Já tentei dessa forma e não funcionou.

Já descobri como resolver o problema, valeu pela tentativa de ajuda, a resolução está abaixo:

`

InputStream reader = (getClass().getResourceAsStream("/cli/" + userID + ".xml"));
Downloader down = (Downloader) xstream.fromXML(reader);

`
substituí o ClassLoader.getSystemResource(“cli/” + userID + “.xml”).getFile().replace("%20", " “));
por (getClass().getResourceAsStream(”/cli/" + userID + “.xml”)); e funcionou!

Criado 28 de junho de 2016
Ultima resposta 28 de jun. de 2016
Respostas 6
Participantes 3