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.txten 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
resourcescarpeta en unmavenproyectoLos 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
ClassLoaderEn este caso, el archivo de propiedades debe estar en el
root/srcdirectorio para que se cargue correctamente.Caso 2: cargar el archivo de propiedades sin usar
ClassLoaderEn este caso, el archivo de propiedades debe estar en el mismo directorio que el
TestLoadProperties.classarchivo para que se cargue correctamente.Nota:
TestLoadProperties.javayTestLoadProperties.classson dos archivos diferentes. El primero,.javaarchivo, generalmente se encuentra en elsrc/directorio de un proyecto , mientras que el segundo,.classarchivo, 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.propertiesfuente
Logré solucionar este problema con esta llamada.
Además, debe poner su archivo anything.properties en / src / main / resources
fuente
PropertiesUtila 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