У меня есть a jar
файл с ресурсами (главным образом конфигурация для кэшей, входа, и т.д.), что я хочу распределить.
У меня есть проблема с относительными путями для тех ресурсов, таким образом, я сделал то, что я нашел в другом stackoverflow вопросе, который сказал, что это было допустимым путем:
ClassInTheSamePackageOfTheResource.class.getResourceAsStream('resource.xml');
Печально это не работает.
Какие-либо идеи?Спасибо!
PS: Очевидно, я не могу использовать полные пути, и я хотел бы избежать переменных среды, если это возможно,
Убедитесь, что папка ресурсов указана в качестве исходной папки в настройках проекта. Кроме того, убедитесь, что папка ресурсов настроена на экспорт, когда вы создаете свою банку.
Вы можете добавить расширение .zip к вашему jar-файлу, а затем открыть его, чтобы убедиться, что ваши ресурсы включены и находятся в ожидаемом месте.
Я всегда использую абсолютные пути вроде этого:
InputStream input = this.getClass().getResourceAsStream("/image.gif");
Когда вы используете абсолютные пути, «/» - это корневая папка в файле jar, а не корневая папка хост-машины.
где находится файл resource.xml? Если в корне исходного дерева, попробуйте добавить к нему префикс /.
Мне всегда приходилось ломать голову над getResourceAsStream
, чтобы это работало. Если "resource.xml" находится в org / pablo / opus
, я думаю , что вам нужно это:
Name.class.getResourceAsStream("org.pablo.opus.resource.xml");
Обычно я сохраняю файлы и другие ресурсы, а затем получаю их как URL-адреса:
URL url = MyClass.class.getResource("/design/someResource.png");
В статическом контексте или иначе:
URL url = getClass().getResource("/design/someResource.png");
Из экземпляра.
Приведенные выше фрагменты предполагают, что дизайн - это папка верхнего уровня в банке. В общем, если путь начинается с «/», он предполагает абсолютный путь, в противном случае он является относительным относительно местоположения класса.