JPackage - Где мне разместить папку ресурсов для моего образа приложения Windows?

В созданном мной приложении я помещаю свои файлы ресурсов в папку (с именем YoutubeAudioAutoDownloader-resources) и убедился, что это работает, когда я поместил папку рядом с файлом .jar моего приложения.

И когда я использую jpackage для создания установщика exe со следующим кодом cmd: (извините за грязный код из-за моего ужасного расположения каталогов, только часть, которую я хочу подчеркнуть, - это параметры --type и --resource-dir)

set jh=D:\development\jdk-14\bin
set appname=YoutubeAudioAutoDownloader v1.2.2
pushd %jh%

jpackage --type app-image --name "%appname%" --input "%~dp0packaging\jar" --dest "%~dp0packaging" --main-jar "YoutubeAudioAutoDownloader v1.2.2.jar" --main-class "com.awidesky.YoutubeClipboardAutoDownloader.Main" --resource-dir "%~dp0release.v1.2.1\YoutubeAudioAutoDownloader-resources" --icon "%~dp0icon\icon.ico

pause

У меня вопрос:

Куда мне поместить папку YoutubeAudioAutoDownloader-resources? в папку app в папке изображений приложения? или мне не нужно делать это из-за --resource-diroption? (Не уверен, что я вообще правильно знаю об этом варианте)


person eugene    schedule 31.08.2020    source источник


Ответы (1)


Параметр --resource-dir в jpackage предназначен для изменения ресурсов EXE приложения, таких как значки и т. Д., Но похоже, что вы действительно хотите, чтобы ваши собственные классы получали доступ к локальным ресурсам с помощью myClass.getClassLoader().getResourceAsStream("somerespath.xyz").

Я не думаю, что JDK14 jpackage дает возможность указать каталог локальных ресурсов для добавления в путь к классам запущенного jpackage EXE. Но он добавляет банки, поэтому, если вы объедините весь каталог ресурсов в банку вместе с простым классом Java, скажем MyNewClass, вы можете найти ресурсы с помощью:

MyNewClass.class.getClassLoader().getResourceAsStream("pathto/aresource.xyz");

Этот новый jar-файл должен быть с другими вашими jar-файлами, поэтому он будет взят с помощью --input "%~dp0packaging\jar", а затем поле classpath каждого EXE-файла запуска app/xyz.cfg должно ссылаться на jar-файл с дополнительными ресурсами.

person DuncG    schedule 09.09.2020