Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Проблема при обращении к ресурсу внутри .jar


Автор: GSMD 6.11.2006, 17:47
При запуске программы требуется взять данные, хранящиеся в файле в одном из пакетов в проекте. Пытаюсь получить доступ к файлу по пути, относительно главного пакета проекта, но по указанному пути файл не находится, хотя в других аналогичных случаях таких проблем не возникало, и файлы находились и и подгружались корректно.
Код
URL url = Thread.currentThread().getContextClassLoader().getResource("/my/full/resource/path/auth.conf");
    prop.load(url.openStream());

При вызове
Код
url.openStream()
 вылетает NUllPointer т.к. url == null.

В аналогичном случае 
Код
URL url = Thread.currentThread().getContextClassLoader().getResource(
          "/my/full/resource/path/picture.png");

файл подгружется нормально.

Многоуважаемые, есть ли какие идеи? Благодарю.

Автор: jitm 6.11.2006, 17:53
Смотри в каких случаях будет null:


Цитата

Returns:
         A URL object for reading the resource, or null if the resource could not be found or the invoker doesn't have adequate privileges to get the resource.

И переппроверь всё!

Автор: LSD 6.11.2006, 20:47
Проверь что auth.conf действительно лежит в CLASSPATH именно в той подпапке, откуда ты его пытаешься грузить.

Автор: Metal_Heart 7.11.2006, 11:09
на сколько я понял, что:

Проблема при обращении к ресурсу внутри .jar


GSMD, попробуй так:
Код

URL url = Thread.currentThread().getContextClassLoader().getResource("my/full/resource/path/auth.conf");

Автор: GSMD 7.11.2006, 12:34
LSD, кстати, спасибо. Добавил файл в ClassPath. Но не помогло.

Metal_Heart, а вот это помогло smile. Сенкс! Буду экспериментировать дальше с начальными слэшами.

Автор: Metal_Heart 7.11.2006, 13:19
На сколько мне известно - начальный слэш требуется при обращении к реальному каталогу,
а его отсутствие требуется при обращении внутри jar-а.

Автор: LSD 7.11.2006, 22:17
Цитата(GSMD @  7.11.2006,  12:34 Найти цитируемый пост)
Добавил файл в ClassPath. Но не помогло.

Какой у тебя CLASSPATH и где именно лежит auth.conf(полный путь).

Добавлено @ 22:18 
Код
URL url = Thread.currentThread().getContextClassLoader().getResource("java/lang/Object.class");
System.out.println("url = " + url);

Автор: bytes 8.11.2006, 23:26
auth.conf  - а что это за файл?

Автор: Metal_Heart 9.11.2006, 10:00
Вообще-то, GSMD сказал:

Цитата(GSMD @  7.11.2006,  12:34 Найти цитируемый пост)
это помогло smile. Сенкс! Буду экспериментировать дальше с начальными слэшами. 


Остается только один вопрос - почему тему не пометил?

Автор: GSMD 12.11.2006, 22:42
LSD, с classpath все ок ;).

bytes, текстовый файл.

Metal_Heart, был в отъезде, это по большому секрету ;).

Всем спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)