Ao carregar as propriedades de uma classe no pacote, com.al.common.email.templates
você pode usar
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("foo.properties");
prop.load(in);
in.close();
(Adicione todo o tratamento de exceção necessário).
Se sua classe não estiver nesse pacote, você precisará adquirir o InputStream de maneira um pouco diferente:
InputStream in =
getClass().getResourceAsStream("/com/al/common/email/templates/foo.properties");
Caminhos relativos (aqueles sem um '/' inicial) em getResource()
/ getResourceAsStream()
significam que o recurso será pesquisado em relação ao diretório que representa o pacote em que a classe está.
Usando java.lang.String.class.getResource("foo.txt")
iria procurar o arquivo (inexistente) /java/lang/String/foo.txt
no classpath.
Usar um caminho absoluto (aquele que começa com '/') significa que o pacote atual é ignorado.
Para aumentar a resposta de Joachim Sauer, se você precisar fazer isso em um contexto estático, pode fazer algo como o seguinte:
(Tratamento de exceções eliminado, como antes.)
fonte
resources
pasta em ummaven
projetoOs dois casos a seguir estão relacionados ao carregamento de um arquivo de propriedades de uma classe de exemplo chamada
TestLoadProperties
.Caso 1: Carregando o arquivo de propriedades usando
ClassLoader
Nesse caso, o arquivo de propriedades deve estar no
root/src
diretório para carregamento bem-sucedido.Caso 2: Carregando o arquivo de propriedades sem usar
ClassLoader
Nesse caso, o arquivo de propriedades deve estar no mesmo diretório que o
TestLoadProperties.class
arquivo para um carregamento bem-sucedido.Nota:
TestLoadProperties.java
eTestLoadProperties.class
são dois arquivos diferentes. O primeiro,.java
arquivo, geralmente é encontrado nosrc/
diretório de um projeto , enquanto o último,.class
arquivo, geralmente é encontrado em seubin/
diretório.fonte
fonte
fonte
Supondo que você esteja usando a classe Properties , por meio de seu método load , e eu acho que você está usando ClassLoader getResourceAsStream para obter o fluxo de entrada.
Como você está passando no nome, parece que deveria ser desta forma:
/com/al/common/email/templates/foo.properties
fonte
Eu consegui resolver esse problema com esta ligação
Extra, você tem que colocar seu arquivo what.properties em / src / main / resources
fonte
PropertiesUtil
saindo?Ninguém menciona a solução semelhante, mas ainda mais simples do que a anterior, sem necessidade de lidar com o pacote da aula. Supondo que myfile.properties esteja no caminho de classe.
Aproveitar
fonte
use o código abaixo, por favor:
fonte