2012-01-06 16 views
5

Estoy tratando de cargar un archivo de imagen binario para hacer algún procesamiento dentro de mi código Java del lado del servidor. Actualmente estoy poniendo mi imagen en el paquete donde existe mi clase de ejecución y llamando:¿Cómo puedo leer un archivo de recursos en un archivo war sin detonar implementado en Tomcat?

Image img = Image.getInstance(this.getClass().getResource("logo.png")); 

Esto funciona bien cuando estoy corriendo Tomcat en mi máquina de desarrollo en una configuración de guerra explotó, pero cuando despliego a un servidor ejecutando Tomcat donde no explota los archivos war, la llamada a getResource devuelve null.

También he intentado mover la imagen a mi raíz de contexto y acceder así:

Image img = Image.getInstance(this.getClass().getResource("/../../logo.png")); 

Una vez más, esto funciona en mi máquina de desarrollo, pero no cuando implementarlo en otros lugares.

¿Hay una forma mejor de acceder a este archivo? ¿Qué estoy haciendo mal?

Gracias!

+0

probablemente debería tener también mencioné que soy usando Maven para construir mi aplicación web. Tengo una respuesta completa que soluciona mi problema, pero no puedo publicarla durante 8 horas sobre mi propia pregunta. – 11101101b

+0

Ponga recursos en su directorio "src/main/resources". Luego acceda a ellos con: this.getClass(). GetResource ("/ logo.png"); o: Thread.currentThread(). GetContextClassLoader(). GetResource ("logo.png"); – 11101101b

Respuesta

5

Si usted está construyendo utilizando Maven, usted quiere asegurarse de que la imagen en realidad se guarde dentro del archivo.

Ponga recursos en su directorio src/main/resources. A continuación, acceder a ellos con:

this.getClass().getResource("/logo.png"); 

o:

Thread.currentThread().getContextClassLoader().getResource("logo.png"); 

(Ejemplos de código de comentario anterior, pero puso en la respuesta a ser más visible)

+0

No olvide el '/' antes del nombre del archivo en el primer caso –

1

Se puede poner sus imágenes en la raíz de la ruta de clases y probar este:

Thread.currentThread().getContextClassLoader() 
       .getResource("logo.png"); 
+1

+1 - Por root de su classpath, "WEB-INF/classes" dentro del archivo WAR es donde muchos pondrán dichos recursos. Aunque pueden organizar utilizando carpetas como "images/logo.png" dentro de allí. – rfeak

Cuestiones relacionadas