Проблемы с JPackage из-за разной структуры путей между Windows и Linux

В Windows я только что преобразовал установщик своего приложения из Izpack в JPackage, и из-за структуры, созданной JPackage, мне пришлось внести некоторые изменения в код, чтобы мое приложение могло найти различные файлы конфигурации, в основном они копируются из папки приложения в C:\Users\Username\Appdata.... при первом запуске (но немного сложнее).

Сейчас я использую JPackage в Linux, и приложение копирует файлы конфигурации из приложения в $HOME/.appname. Однако, в то время как приложение Windows является подпапкой относительно средства запуска с Linux, теперь оно находится в ../lib/app, поэтому код не работает

Поэтому мне нужно внести некоторые изменения, специфичные для Linux, но это заставило меня задуматься, что я делаю здесь что-то очень не так, чтобы мне пришлось внести эти изменения?

1 ответ

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

    Properties properties = new Properties();
    InputStream stream = YourApplication.class.getResourceAsStream("/resources/conf.properties");
    properties.load(stream);

Путь (пример) /resources/conf.properties относится к файлу.jar, в который он входит, поэтому не зависит от папки установки.

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

Другие вопросы по тегам