2008-10-31 9 views
15

¿Cómo se depuran los métodos de estilo getResource que están fallando, devolviendo nulo?Depuración getResource *

Estoy seguro de que el archivo que está buscando está allí, pero está devolviendo NULL. ¿Cómo sé lo que está buscando para detectar cualquier desajuste?

Respuesta

4

Puede usar Eclipse-debug-mode y establecer un punto de interrupción en el método que falla. Desde allí puede ir paso a paso hacia abajo en el árbol de llamadas hasta que vea lo que falla.

más común es que el archivo no existe, ya que no se copió allí o no está en la ruta de clase, etc ...

+0

ACK, eso es con lo que me he encontrado también. – dhiller

+0

sí, eso es lo más común, sucedió varias veces al pasar de IDE a un script ant para compilar ... – Vinze

3

llamada La getResource está buscando un archivo en relación con el archivo de clase.

Mi primera suposición sería que, cuando haya compilado, olvidó poner los archivos de recursos en la carpeta de compilación. Eso es en lo que he estado corriendo a menudo.

0

Por lo general, experimento esto cada vez que el cargador de clases cambia.

Según el contexto exacto en el que se ejecuta una aplicación, los ClassLoaders tienen reglas diferentes sobre cuándo existe un archivo de recursos. Por ejemplo, en netbeans, getResource no distingue entre mayúsculas y minúsculas, pero en Sun's JRE lo es.

Aunque no respondió su pregunta directamente, pensé que debería saber esto (si no lo hizo ya).

12

Desde getResource() busca en la ruta de clase (como han mencionado otros), que podría ser útil para volcar la ruta de clase real que está siendo buscado antes de que su problemsome getResource() llamada:

log.debug("classpath is: " + System.getProperty("java.class.path")); 

//the line that is returning null 
... = Thread.currentThread().getContextClassLoader().getResource("foobar"); 

Probablemente lo que sucede es que los archivos/directorios crees que están en el classpath en realidad no lo están (quizás un camino inválido se está estableciendo en algún lugar en el camino).

0

Creo que debería decirle a Eclipse o su IDE favorito donde se encuentran los archivos fuente de JDK (JRE). Luego puede ingresar a los métodos de las clases Java Runtime también.

Cuestiones relacionadas