Отладка getResource * - PullRequest
       16

Отладка getResource *

17 голосов
/ 31 октября 2008

Как вы отлаживаете getResource методы стиля, которые дают сбой и возвращают ноль?

Я уверен, что файл, который он ищет, там есть, но он возвращает NULL. Откуда я знаю, что он ищет, чтобы попытаться обнаружить любое несоответствие?

Ответы [ 5 ]

15 голосов
/ 31 октября 2008

Так как getResource() ищет путь к классу (как уже упоминали другие), может быть полезно сбросить фактический путь к классу, который ищется, перед вашим проблемным getResource() вызовом:

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

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

Что, вероятно, происходит, так это то, что файлы / каталоги, которые, по вашему мнению, находятся в пути к классам, на самом деле не являются (возможно, где-то по пути задан неверный путь).

4 голосов
/ 31 октября 2008

Вы можете использовать Eclipse-debug-mode и установить точку останова на методе, который не работает. Оттуда вы можете шаг за шагом идти вниз в дереве вызовов, пока не увидите, что выходит из строя.

Чаще всего этого файла нет, потому что он там не был скопирован или отсутствует в пути к классам и т. Д. *

3 голосов
/ 31 октября 2008

Вызов getResource ищет файл относительно файла класса.

Моим первым предположением будет то, что после компиляции вы забыли поместить файлы ресурсов в папку компиляции. Это то, на чем я часто бегаю.

0 голосов
/ 02 ноября 2008

Я думаю, вы должны указать Eclipse или вашей любимой IDE, где можно найти исходные файлы JDK (JRE). Затем вы также можете использовать методы классов Java Runtime.

0 голосов
/ 31 октября 2008

Я обычно испытываю это всякий раз, когда меняется ClassLoader.

В зависимости от точного контекста, в котором запущено приложение, ClassLoaders имеет разные правила о том, когда существует файл ресурса. Например, в netbeans getResource нечувствителен к регистру, но в JRE Sun это так.

Хотя я не отвечаю прямо на ваш вопрос, я подумал, что вы должны это знать (если вы этого еще не сделали).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...