Foros del Web » Programación para mayores de 30 ;) » Java »

no encuentra archivo .properties

Estas en el tema de no encuentra archivo .properties en el foro de Java en Foros del Web. Hola, estoy intentando acceder a un archivo .properties, pero por más que intento leerlo no lo encuentra. Para llamarlo a él y sus propiedades utilizo ...
  #1 (permalink)  
Antiguo 11/07/2011, 08:39
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 11 meses
Puntos: 1
no encuentra archivo .properties

Hola, estoy intentando acceder a un archivo .properties, pero por más que intento leerlo no lo encuentra. Para llamarlo a él y sus propiedades utilizo lo siguiente:

Código:
Properties properties = new Properties();
properties.load(new FileInputStream("Report.properties"));
			driver = properties.getProperty("driverJasperReport");
			url = properties.getProperty("urlJasperReport");
			user = properties.getProperty("userJasperReport");
			password = properties.getProperty("passwordJasperReport");
pero lo ponga donde lo ponga no lo encuentra. Alguien puede decirme dónde debo ponerlo, o si lo estoy llamando mal? La verdad es que no lo he hecho nunca, pero por internet había encontrado que esta era la manera.

Mi aplicación sigue la siguiente estructura:

app -- otros directorios
----- informes -- src -- otros folders -- informes -- action que hace la llamada
--------------- web -- jsp
--------------------- resources

He probado a ponerlo dentro de resources, dentro de informes (junto al action que lo llama), a llamarlo por su nombre, a llamarlo por /informes/web/resources/Report.properties, etc, y no me lo lee.

¿Alguna idea? Muchas gracias, un saludo
  #2 (permalink)  
Antiguo 11/07/2011, 09:08
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: no encuentra archivo .properties

Justo antes de cargarlo, saca por pantalla (o donde puedas), el valor de

System.getProperty("user.dir")

El directorio que te salga ahí es donde tienes que ponerlo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 12/07/2011, 01:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: no encuentra archivo .properties

Hola, la dirección que me sale es "C:\Sun\AppServer\domains\domain1\config", pero no es una dirección dentro de mis directorios. Quiero decir, de mi proyecto cuelgan unos directorios principales, y dentro de cada uno de ellos el típico directorio src (con los action), web (con las jsps), etc. Además tengo la impresión que me está sacando el usuario de la sesión, pero no del fichero .properties que tengo solamente para establecer la conexión a bbdd que persigo. Es un fichero que quiero tener aparte, porque voy a tener varias llamadas al mismo para conectar con la bbdd y obtener informes con JasperReport, y quiero que si el día de mañana tengo que cambiar algo (user, password, driver, ...) que sea sólo en ese fichero y no en cada llamada. Pero no encuentro la manera de que así sea.

Si puedes ayudarme un poco más te lo agradecería.

Un saludo
  #4 (permalink)  
Antiguo 12/07/2011, 06:03
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: no encuentra archivo .properties

Hola:

Solo sé un poquito de esto (lo mio no son las aplicacioens webb), así que puedo darte un par de ideas, tendrás que concretar tú los detalles y ver si funcionan bien.

Por un lado en los jsp y en los servlets con tomcat (supongo que en los demas servidores de aplicaciones también) tienes disponible un objeto ApplicationContext o ServletContext que tiene un método getRealPath(). Creo que esto debería darte el path donde empieza tu aplicación. A partir de ahí podrías intentar componer el path absoluto de tu fichero properties para leerlo. En un jsp puedes escribir esto directamente application.getRealPath(), ya que el objeto application lo tienes disponible igual que el request, session o response.

Deberías meter el fichero de propiedades en un directorio que no esté accesible desde el navegador.

Otra opción es meter el fichero ese de propiedades en WEB-INF/classes, de esta forma puedes acceder a él como si fuera un recurso en el classpath (algunaclase.getClassLoader().getResoruceAsStream( "fichero.properties"). Esto te devolvera un InputStream que puedes pasar a tu clase Properties.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 12/07/2011, 09:55
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: no encuentra archivo .properties

Hola, primero muchas gracias por responderme, siempre es una ayuda. Al final al compilar no metía esos archivos en el .ear, por eso no los encontraba. Ahora los tengo en la dirección del ear:

informes.jar\es\indra\aodb\informes\web\action\inf ormes\reportProperties

y en la dirección del war:

AODB2.war\WEB-INF\classes\es\indra\aodb\informes\web\action\info rmes\reportProperties - archivo ZIP, tamaño descomprimido 36.276.967 bytes

buscando en el explorer.

La llamada al archivo es:

Properties properties = new Properties();
properties.load(new FileInputStream(" ... ");

y es justo el " ... " lo que me falla, ponga lo que ponga no me sale. He probado con todo lo siguiente:

/informes/es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties

informes/es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties

/es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties

es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties

/informes/reportProperties/Report.properties

informes/reportProperties/Report.properties

/reportProperties/Report.properties

reportProperties/Report.properties

/Report.properties

Report.properties

pero nada. ¿No será que la barra tiene que ser para el otro lado, o cosa tonta (lo digo por no verlo) similar? Por favor, si alguien puede decirme qué demonios me falta, se lo agradecería mucho.
  #6 (permalink)  
Antiguo 12/07/2011, 11:01
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: no encuentra archivo .properties

Como te comento, si lo pones en el classes tienes que leerlo como recurso del classpath, no te vale un FileInputStream ni nada parecido. Haz algo como esto

properties.load ( properties.getClass().getResourceAsStream("/es/indra/.../Report.properties"));

Por cierto, por el nombre de los paquetes, somos compañeros de trabajo (Torrejón)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 13/07/2011, 02:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: no encuentra archivo .properties

Vale, al final he dado con el problema. Tenía que utilizar lo siguiente:

this.getClass().getClassLoader().getResourceAsStre am()

en lugar de

getClass().getClassLoader().getResourceAsStream()


era tan tonto como eso. Porque si no me cogía el de otro .jar y no el que me tenía que coger. Ahora ya funciona correctamente de la siguiente manera:

Código:
Properties properties = new Properties();	
properties.load (this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
Muchas gracias por tu ayuda chuidiang, y si, somos compañeros por lo que veo, aunque supongo que no del mismo departamento. Por cierto que he visto tu web y está muy chula.

Un saludo

Etiquetas: encuentra, properties
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:29.