Al cargar las propiedades de una clase en el paquete com.al.common.email.templates
, puede usar
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("foo.properties");
prop.load(in);
in.close();
(Agregue todo el manejo de excepciones necesario).
Si su clase no está en ese paquete, debe adquirir InputStream de manera ligeramente diferente:
InputStream in =
getClass().getResourceAsStream("/com/al/common/email/templates/foo.properties");
Las rutas relativas (aquellas sin un '/' inicial) en getResource()
/ getResourceAsStream()
significan que el recurso se buscará en relación con el directorio que representa el paquete en el que se encuentra la clase.
El uso java.lang.String.class.getResource("foo.txt")
buscaría el archivo (inexistente) /java/lang/String/foo.txt
en la ruta de clase.
Usar una ruta absoluta (una que comience con '/') significa que se ignora el paquete actual.
Para agregar a la respuesta de Joachim Sauer, si alguna vez necesita hacer esto en un contexto estático, puede hacer algo como lo siguiente:
(El manejo de excepciones elidió, como antes).
fuente
resources
carpeta en unmaven
proyectoLos siguientes dos casos se relacionan con la carga de un archivo de propiedades desde una clase de ejemplo llamada
TestLoadProperties
.Caso 1: Cargando el archivo de propiedades usando
ClassLoader
En este caso, el archivo de propiedades debe estar en el
root/src
directorio para que se cargue correctamente.Caso 2: cargar el archivo de propiedades sin usar
ClassLoader
En este caso, el archivo de propiedades debe estar en el mismo directorio que el
TestLoadProperties.class
archivo para que se cargue correctamente.Nota:
TestLoadProperties.java
yTestLoadProperties.class
son dos archivos diferentes. El primero,.java
archivo, generalmente se encuentra en elsrc/
directorio de un proyecto , mientras que el segundo,.class
archivo, generalmente se encuentra en subin/
directorio.fuente
fuente
fuente
Suponiendo que está usando la clase Properties , a través de su método de carga , y supongo que está usando ClassLoader getResourceAsStream para obtener el flujo de entrada.
¿Cómo está pasando el nombre? Parece que debería estar en esta forma:
/com/al/common/email/templates/foo.properties
fuente
Logré solucionar este problema con esta llamada.
Además, debe poner su archivo anything.properties en / src / main / resources
fuente
PropertiesUtil
a partir de?Nadie menciona la solución similar pero incluso más simple que la anterior sin necesidad de lidiar con el paquete de la clase. Suponiendo que myfile.properties está en classpath.
Disfrutar
fuente
utilice el siguiente código por favor:
fuente