Наш проект в затмении приблизительно показывает следующие папки:
application
- src
- JRE System Library [1.6]
- Referenced Libraries
- lib
- rsc
В нашем проекте мы хотели бы использовать Файл> Экспорт...> Исполняемый файл JAR
Хорошо это хорошо работает за некоторым исключением: Если мы хотим выполнить наш application.jar, мы все еще должны скопировать папку, rsc/в том же месте как application.jar.
В rsc/, у нас есть другие папки для разделения различных частей. В основном мы загружаем части с помощью кода (хорошо немного измененный, но стиль пути корректен),
strUrl = "file:rsc/properties/Constants.properties";
url = new URL(strUrl);
ImageIcon icon = new ImageIcon(url);
Я мог щелкнуть правой кнопкой по rsc/> Путь Сборки> Использование в качестве Исходной Папки.
Но это не работает также, потому что затмение автоматически не копирует rsc папку в bin/-folder. И затем мы не можем больше выполнять его от терминала (не упакованный в банку)
Править: почему затмение не может обработать это правильно? Почему это имеет проблемы с "вложенными" выходными папками? На Исходной вкладке диалогового окна Пути Сборки я мог легко добавить rsc/-folder с выходным набором папки к bin/rsc/, но это, кажется, не может поместить вложенные папки...
РЕДАКТИРОВАНИЕ 2: Теперь я смог создать XML-файл для создания материала с муравьем и так или иначе сумел включать rsc-папку прямо в банку. Все еще не работает из-за тех же ошибок. Я должен действительно проверить пути ресурсов, являются ли они в JAR или нет? Содержание JAR является теперь следующим:
META-INF/
META-INF/MANIFEST.MF
configurator/
controller/
editor/
gui/
logic/
networking/
rsc/
rsc/gamesettings/
rsc/levels/
rsc/pics/
rsc/properties/
util/
но Java все еще ненавидит меня и броски java.io.FileNotFoundException: rsc/properties/Constants.properties
с stacktrace приблизительно 100 строк.
кто-либо идея, как сделать это? спасибо и отношения
Если вы отметили RSC
в виде исходного папки Eclipse, скопируют его содержимое в выходной каталог. Или вы могли бы просто переместить RSC
в SRC
, если вы хотите группировать ресурсы на выходе.
Затем вы можете использовать Class.getResource («/ Свойства / константы. LOPERTIES»)
или Class.GetResource («/ RSC / Properties / Constants.properties»)
И это Будет работать независимо от того, если ваше приложение упаковано как баночка или работает из источника.
Как Sidenote, файл :
протокол работает только с обычными файлами, для доступа к файлам внутри банки, который вы должны использовать что-то вроде новый URL («JAR: файл: приложение. jar! /rsc/properties/Constants.properties ")
.
Вы можете попробовать: в диалоговом окне «Путь Pature Java» перейдите на вкладку «Библиотеки» и выберите «Добавить папку классов ...». Выберите RSC
из диалогового окна выбора папки класса. Содержимое каталога
теперь будет включено в файл исполняемого файла.
(Обратите внимание, что сам RCC не будет включен, поэтому вам, возможно, придется добавить новый подкаталог под RSC, чтобы сделать структуру каталогов в банке правой.)
Для такого использования я бы рекомендовал использовать Maven , что автоматически делает это при создании банке. Есть даже плагин Eclipse .
Я делаю это обычно вручную, в твоем случае JAR -UF FOO.JAR RSC Это включает в себя все ваши ресурсы. Вы можете написать сценарий или сделать это в муравьеве
Как вы говорите в Редактировать 2 , что у вас все в одной банке, это должно работать:
String path = "rsc/img/img.gif";
URL url = this.getClass().getResource(path);
ImageIcon icon = new ImageIcon(url);