Qual o melhor lugar para colocar arquivos properties?

5 respostas
leandrocm86

Fiz uma longa busca no fórum, mas não encontrei respostas satisfatórias.
Muita gente falando pra deixar em pastas que guardam códigos, mas isso não me parece muito limpo, certo?

Estou usando Tomcat e Netbeans. Tem alguma forma de não deixar um arquivo properties na mesma pasta do código que o usa e mesmo assim não ter que digitar o endereço completo dele quando for carregá-lo?
Minha intenção é não ter que alterar o código quando o projeto for mudar de computador, mas fazer isso de forma limpa.

Obrigado!

5 Respostas

celso.martins

A melhor forma, para mim, é colocar onde estão seus arquivos de configuração, como o web.xml.

Faça a referência lógica ao diretorio, e seja feliz.

Abraços

L

Você pode por ele dentro de META-INF/, mas isso implica que deve fornecer o caminho completo ao buscá-lo, ou seja, um arquivo message.properties dentro de META-INF deve ser buscado como /META-INF/message.properties.

E não sei como é comportamento de alguns frameworks web ao se fazer isso, o negócio é tentar no seu caso pra ver.

leandrocm86

celso.martins:
A melhor forma, para mim, é colocar onde estão seus arquivos de configuração, como o web.xml.

Faça a referência lógica ao diretorio, e seja feliz.

Abraços

Como seria essa referência lógica?
Tenho uma classe que usa o properties na pasta Java Source da minha aplicação.
Na mesma altura da pasta Java Source há a pasta conf (que contém o web.xml). Coloquei meus properties lá, mas o arquivo não está sendo encontrado na classe java.
A FileNotFoundException rola nesse trecho:

Properties mensagens = new Properties();
File file = new File("/conf/mensagens.properties");
mensagens.load(new FileInputStream(file));
leandrocm86

Não tô conseguindo… :frowning:

celso.martins

Cara, esquece a referência lógica, eu estava meio bêbado ontem. Mas isso seria via a URL da sua app.

Acho que tem duas formas de você resolver essa pendenga. Pegando no properties o dir base da app e depois navegando na árvore de dir até o local correto:

Properties prop = System.getProperties();
		
String dirBaseApp = prop.get("user.dir");

ou você configura uma variável de ambiente e acessa o conteúdo dela para recuperar a informação.

Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
  System.out.format("%s=%s%n", envName, env.get(envName));
}

Esse trecho foi pego aqui

Abraços

Criado 20 de setembro de 2008
Ultima resposta 21 de set. de 2008
Respostas 5
Participantes 3