[RESOLVIDO]Problemas com Leitura de arquivo

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)

Tem esse XML nesse caminho? Exatamente nesse caminho?

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

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

Tente assim:

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

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

1 curtida

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

@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!