Доступ к ресурсам JAR

У меня есть a jar файл с ресурсами (главным образом конфигурация для кэшей, входа, и т.д.), что я хочу распределить.

У меня есть проблема с относительными путями для тех ресурсов, таким образом, я сделал то, что я нашел в другом stackoverflow вопросе, который сказал, что это было допустимым путем:

ClassInTheSamePackageOfTheResource.class.getResourceAsStream('resource.xml');

Печально это не работает.

Какие-либо идеи?Спасибо!

PS: Очевидно, я не могу использовать полные пути, и я хотел бы избежать переменных среды, если это возможно,

9
задан Andrew Thompson 12 July 2013 в 08:12
поделиться

4 ответа

Убедитесь, что папка ресурсов указана в качестве исходной папки в настройках проекта. Кроме того, убедитесь, что папка ресурсов настроена на экспорт, когда вы создаете свою банку.

Вы можете добавить расширение .zip к вашему jar-файлу, а затем открыть его, чтобы убедиться, что ваши ресурсы включены и находятся в ожидаемом месте.

Я всегда использую абсолютные пути вроде этого:

InputStream input = this.getClass().getResourceAsStream("/image.gif");

Когда вы используете абсолютные пути, «/» - это корневая папка в файле jar, а не корневая папка хост-машины.

11
ответ дан 4 December 2019 в 14:27
поделиться

где находится файл resource.xml? Если в корне исходного дерева, попробуйте добавить к нему префикс /.

1
ответ дан 4 December 2019 в 14:27
поделиться

Мне всегда приходилось ломать голову над getResourceAsStream , чтобы это работало. Если "resource.xml" находится в org / pablo / opus , я думаю , что вам нужно это:

Name.class.getResourceAsStream("org.pablo.opus.resource.xml");
1
ответ дан 4 December 2019 в 14:27
поделиться

Обычно я сохраняю файлы и другие ресурсы, а затем получаю их как URL-адреса:

URL url = MyClass.class.getResource("/design/someResource.png");

В статическом контексте или иначе:

URL url = getClass().getResource("/design/someResource.png");

Из экземпляра.

Приведенные выше фрагменты предполагают, что дизайн - это папка верхнего уровня в банке. В общем, если путь начинается с «/», он предполагает абсолютный путь, в противном случае он является относительным относительно местоположения класса.

1
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: