Erro ao ler properties

10 respostas
rocha

Olá pessoal,

Estou com o seguinte problema, tenho um .properties num pacote assim

/br/com/solutec/gestor/dao/comum/Bd.properties

estou tentando ler ele assim:File file = new File("/br/com/solutec/gestor/dao/comum/Bd.properties");

e nã está dando certo

se eu faço assim dá certo
File file = new File(“D:/Sistemas/Gestor/Gestor/projetos/modelGestor/src/br/com/solutec/gestor/dao/comum/Bd.properties”);

mas não quero deixar o path inteiro o q devo fazer?

10 Respostas

afamorim

Rapaz o properties geralemente fica no src da sua aplicação, sendo assim acredito que vc pode fazer o acesso diretamente

File file = new File("Bd.properties");

a localizacao seria
/src/Bd.properties
/com/…/ClasseQueAcessaPropertires

teste ai…

Thiago_Senna

pq vc naum usa por exemplo.

this.getClass().getResource("/caminho/ate/seu/arquivo.properties");

como vc está usando o comando this.getClass().getResource, entaum o caminho até o properties deve se iniciar do ponto onde se encontra a classe de implementação do objeto this!

Outra opção seria o seguinte… mais ou menos isso aqui:
Suponha que vc tem uma classe chamada AlgumaClasse.class, e ela esteja no mesmo pacote que está o seu properties.

File file = new File(AlgumaClasse.class.getResource(Bd.properties);

Faz um testes ai com estes exemplo que te passei. Talvez tenha algum erro, mas já poderá ajudar a você chegar em uma boa solução!

Thiago_Senna

Rocha… uma maneira melhor para carregar seus properties é este aqui!

Properties dataSourceProperties = new Properties();

try {	
			InputStream in = this.getClass().getResourceAsStream("DataSource.properties");
			dataSourceProperties.load(in);
			in.close();
		} catch (IOException exception) {
			logger.error(exception.getMessage(), exception);
			exception.printStackTrace();			
		}

Abraços!
Thiago

rocha

afamorim:
Rapaz o properties geralemente fica no src da sua aplicação, sendo assim acredito que vc pode fazer o acesso diretamente

File file = new File("Bd.properties");

a localizacao seria
/src/Bd.properties
/com/…/ClasseQueAcessaPropertires

teste ai…

Eu já tentei assim mas não rolou

rocha

Tentei isso agora:

String arq = this.getClass().getResource("Bd.properties").toString(); File file = new File(arq);

E a Exception que me foi lançada foi essa:

java.io.FileNotFoundException: jar:file:\D:\Sistemas\Gestor\Gestor\projetos\modelGestor\dist\modelGestor.jar!\br\com\solutec\gestor\dao\comum\Bd.properties (A sintaxe do nome do arquivo, pasta ou nome do volume está incorreta)

at java.io.FileInputStream.open(Native Method)
Thiago_Senna

rocha:
Tentei isso agora:

String arq = this.getClass().getResource("Bd.properties").toString(); File file = new File(arq);

E a Exception que me foi lançada foi essa:

java.io.FileNotFoundException: jar:file:\D:\Sistemas\Gestor\Gestor\projetos\modelGestor\dist\modelGestor.jar!\br\com\solutec\gestor\dao\comum\Bd.properties (A sintaxe do nome do arquivo, pasta ou nome do volume está incorreta)

at java.io.FileInputStream.open(Native Method)</blockquote>

Rocha, vc tem duas alternativas!

1 - Parece que vc tá rodando a aplicação à partir de um jar, entaum use o segundo exemplo que te passei, o getResourceAsStream!!!

2 - Verifique se o caminho está realmente correto. Se minha classe this se encontra no pacote br.guj, e meu properties está no pacote br.guj.util, se eu der um getResource(bd.properties), deverá lançar um erro, pois o this e o properties então em pacotes diferentes!

Thiago_Senna

3 - Certifique de que o Bd.Properties realmente está sendo empacotado dentro do jar!

rocha

[quote=Thiago Senna]

rocha:
Tentei isso agora:

1 - Parece que vc tá rodando a aplicação à partir de um jar, entaum use o segundo exemplo que te passei, o getResourceAsStream!!!

Thiago deu certo valeu, cara se caso eu quiser ter esse arquivo fora do meu jar como eu poderia fazer, suponhamos q eu queira abrir ele num bloco de notas para edita-lo e não quero ele compactado com minha aplicação.

Thiago_Senna

rocha:
rocha:
Tentei isso agora:

1 - Parece que vc tá rodando a aplicação à partir de um jar, entaum use o segundo exemplo que te passei, o getResourceAsStream!!!

Thiago deu certo valeu, cara se caso eu quiser ter esse arquivo fora do meu jar como eu poderia fazer, suponhamos q eu queira abrir ele num bloco de notas para edita-lo e não quero ele compactado com minha aplicação.

É só fazer com que sua aplicação aponte para um properties que esta fora da aplicação, igual vc estava fazendo no começo!

Outra maneira, seria vc passar um parâmetro enquanto estiver iniciando a aplicação dizendo onde está os arquivos de configurações da aplicação… exemplo:

java MinhaApp c:\config\arquivo1.properties

Bom…
Para ser sincero, eu não gosto muito disso, e nem sei qual é a melhor de maneira de lidar com isso, mas a idéia é a mesma que você usou no começo do tópico, passar o caminho absoluto de onde se encontra aplicação.

Se vc realmente precisar disso, (espero que não… hehe), dê uma procurada na net por uma solução melhor do que essas que coloquei aqui!

Abraços!
Thiago

rocha

Valeu!!!

Criado 1 de agosto de 2005
Ultima resposta 1 de ago. de 2005
Respostas 10
Participantes 3