[Ajuda] Problema path arquivo!

8 respostas
K

Salve Gujeiros!

Estou com um problema aqui:

Ao chamar o método: inputStream = MenuParser.class.getClassLoader().getResourceAsStream("pacote1/br/com/menu.xml");
ele retorna null pois não encontra o arquivo.

A minha estrutura de pacotes está da seguinte maneira:

root
|
|- pacote1
|       |- br.com
|                |- menu.xml
|- pacote2
|       |- br.com
|                |- MenuParser.java

O caminho está errado?
Como deveria passar o caminho do arquivo?

Quem puder ajudar agradeço! =)

[]'s

8 Respostas

T

Será que isto resolve?

inputStream = MenuParser.class.getClassLoader().getResourceAsStream("/pacote1/br/com/menu.xml");

K

thingol:
Será que isto resolve?

inputStream = MenuParser.class.getClassLoader().getResourceAsStream("/pacote1/br/com/menu.xml");

infelizmente não Thingol… =/

tb já tentei colocar o caminho completo e não funcionou:

inputStream = MenuParser.class.getClassLoader().getResourceAsStream("root/pacote1/br/com/menu.xml"); inputStream = MenuParser.class.getClassLoader().getResourceAsStream("/root/pacote1/br/com/menu.xml");

mas alguma sugestão?

Obrigado.

T

NO seu caso em particular, desconfio que você, a partir de um pacote, não pode acessar os resources do outro pacote. No seu caso, para você acessar, teria de usar algo como:

“/br/com/menu.xml”

K

thingol:
NO seu caso em particular, desconfio que você, a partir de um pacote, não pode acessar os resources do outro pacote. No seu caso, para você acessar, teria de usar algo como:

“/br/com/menu.xml”

acredito que seja isso mesmo Thingol!
Coloquei o arquivo menu.xml no mesmo pacote e consegui abri-lo tranquilamente!

Obrigado mais uma vez.

[]'s

K

Thingol,

não existe uma outra maneira de ler o arquivo de um outro pacote?

Por que nessa aplicação, alguns arquivos, xml’s por exemplo, devem ficar em um pacote diferente das classes de negócio.

Como poderia criar um InputSource (ou InputStream) de um arquivo que está em outro pacote?

Tentei da seguinte maneira mas ele lança FileNotFoundException em ambos os casos:

private static Boolean openDocument() {
	Boolean ret = Boolean.FALSE;
	InputSource inputSource = null;
	FileReader file = null;
		
	try {
		file = new FileReader("/pacote1/br/com/menu.xml"); // erro
	} catch (FileNotFoundException e1) {
		e1.printStackTrace();
	}
		
      inputSource = new InputSource(file);
}
private static Boolean openDocument() {
	Boolean ret = Boolean.FALSE;
	InputStream inputStream = null;
	try {
		inputStream = new FileInputStream("/pacote1/br/com/menu.xml");
	} catch (FileNotFoundException e1) {
		e1.printStackTrace();
	}
}

Se alguém puder ajudar… hehe

[]'s

K

pessoal,

fazendo alguns testes aqui, consegui ler o arquivo passando o seu caminho físico:

private static Boolean openDocument() {  
    Boolean ret = Boolean.FALSE;  
    InputStream inputStream = null;  
    try {  
        inputStream = new FileInputStream("/home/sistemas/root/pacote1/br/com/menu.xml");  
    } catch (FileNotFoundException e1) {  
        e1.printStackTrace();  
    }  
}

alguma sugestão de como passar o caminho do arquivo que está dentro da aplicação?

[]'s

T

Você pode usar getResource para obter uma URL. Essa URL deve ser algo como “file://” ou “jar://” ou sei lá o quê. A partir de lá, você pode brincar um pouco até obter um objeto File para você poder usar com sua FileInputStream.

K

thingol:
Você pode usar getResource para obter uma URL. Essa URL deve ser algo como “file://” ou “jar://” ou sei lá o quê. A partir de lá, você pode brincar um pouco até obter um objeto File para você poder usar com sua FileInputStream.

Obrigado pela ajuda mais uma vez thingol.

Mas achei mais fácil resolver colocando tudo no mesmo pacote. :smiley:

[]'s

Criado 23 de julho de 2009
Ultima resposta 24 de jul. de 2009
Respostas 8
Participantes 2