powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java-приложение, где хранить конфиги.
19 сообщений из 19, страница 1 из 1
Java-приложение, где хранить конфиги.
    #39373722
01101001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть такой вопрос. Я пишу настольное java-приложение.
Если я запускаю его в винде - конфиг, скорее всего, лежит примерно в той же папке, что и бинарник, а в linux - в /etc или аналогах.
Вот в случае традиционных компилируемых языков, при сборке под каждую конкретную платформу я укажу, где лежат конфиги, где бинарники, где библиотеки - и т.д. И инсталлятор будет для каждой конкретной платформы свой (строго говоря, для линукса редко используется инсталлятор, скорее - собирается пакет).
А как в случае java-приложения? Куда класть конфиги? Как сделать, чтобы инсталлятор был всеплатформенный?
Переменные окружения трогать не хочется. По крайней мере - это будет крайней мерой.
Понятно, что можно по сборке для каждой платформы, но как-то это криво.

И еще вопрос: как сейчас принято хранить конфиги? Создать класс конфиг и потом серилизовать\десирилизовать его в json - это нормально, или дурной тон?
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373736
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001,

Не бывает инсталлеров под разные платформы. Под разные платформы бывает Portable сборка, которая копируется, разархивируется вручную.
JSON конфиг это нормально.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373748
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001как сейчас принято хранить конфиги?
class Preferences - сам хранит в реестре винды, если винда.
Вроде всё работает.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373756
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001Если я запускаю его в винде - конфиг, скорее всего, лежит примерно в той же папке, что и бинарник,
не всегда.
Бывают права в эту папку только чтение.
И раздели инсталляцию приложения на его эксплуатацию (первый запуск).
Совершенно разные вещи.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373768
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Бывают права в эту папку только чтение.
В Винде, так же как и в линуксе есть другие каталоги для хранения конфигов. Это и ProgramData и User Home. Хранить там же где и установлено приложение можно, но не всегда хорошо - зависит от того кто и как пользуется вашим приложением.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373774
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
да. Я об этом и говорил. Что в больших фирмах AD с правами админа всем сразу ставит приложение и потом юзверь уже с пониженными правами эксплуатирует.
Что инсталлятор, что программа может узнать эти пути.
Если лень, то выше класс есть без всяких путей.
Так что вариантов аффтару - море.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373776
01101001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Blazkowicz.
Где-то я натыкался на кроссплатформенный инсталлятор, но на практике не пробовал.
Но чисто теоретически, на java я могу и сам написать инсталлятор. Как в данной ситуации реализовать кроссплатформенность? Прямо в процессе собирать jar-файл, чтобы нужные пути запихнуть вовнутрь? Менять переменные окружения?

2Petro123
А не в винде как? Ну, все равно спасибо. Почитаю сам.
А можно поподробнее про "инсталляцию приложения на его эксплуатацию (первый запуск)". Разница, конечно, очевидна, но я над ней еще не думал. Что я не учитываю?

Я так же понимаю, что под линукс лучше собирать пакет. Просто я еще не задумывался над самим процессом установки приложения.
В процессе инсталляции нужно указать какие-то настройки. Может - действительно их лучше указывать при первом запуске?
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373780
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001,
- открытие приложения
- читаем class Preferences
- если пусто, то положение окна и размер окна берём и устанавливаем из константы модуля W\H
- при закрытии всё пишем в class Preferences
...
Рессурсы для чтения похожим образом, только не нужна запись(могут быть рядом с jar)
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373782
01101001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, спасибо. Наверное, Properties - действительно самый правильный путь.
Я совсем не подумал, что на одном компе могут быть разные пользователи.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373793
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001Я совсем не подумал, что на одном компе могут быть разные пользователи
могут.
Ещё лучше, если при очистке твоих данных для записи, приложение не ругается, а работате как при ПОСЛЕ первой установки.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39373890
01101001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так оно и будет. Всем спасибо за просветление.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374213
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полностью согласен со всеми ораторами. На самом деле можно смело брать JDK-шный вариант
управления конфигурациями. И если его будет мало - то пойти в mvn-repository и просто
посмотреть самый рейтинговый в нужной категории.

http://mvnrepository.com/open-source/config-libraries

Не факт что он будет объективно лучший но комьюнити не даст вам погибнуть от нехватки
examples и всегда можно спросить у опытных дескыть что и как.

Я-бы сам так и поступал.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374257
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для настольного приложения изменяемый конфиг должен лежать в домашней папке текущего пользователя. Для винды есть соответствующий API, возвращающий путь к AppData, в линуксе принято использовать ~/.config/<appname>.

Неизменяемый имхо лучше держать в папке самого приложения.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374559
01101001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой проблемой - просто нет слов.
В общем, попробовал воспользоваться библиотекой Preferences - получил следующую ошибку:
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Поиск по ошибке показал. что в некоторых версиях Windows настройки сохраняются в ветку HKLM вместо HKCU. Проблеме много лет - и насколько я понял - ее никто не собирается исправлять.
Скажите, я все правильно понял?
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374658
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001А как в случае java-приложения? Куда класть конфиги?Так же, как и в случае любого другого приложения.
Основной вариант - файл в домашнем каталоге пользователя. Если файлов больше одного - подкаталог в домашнем каталоге пользователя.Как сделать, чтобы инсталлятор был всеплатформенный?Это невозможно просто по определению.
Если ява-рантайм уже есть - инсталятор как таковой не требуется. Если рантайма ещё нет, то устанавливать его будет нативное приложение.

P.S. Как уже сказали - разделите два этапа:
1. Установка и обновление вашего приложения на компьютере пользователя.
2. Запуск и настройка вашего приложения пользователем.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374723
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001в некоторых версиях Windows настройки сохраняются в ветку HKLM вместо HKCU. Проблеме много лет - и насколько я понял - ее никто не собирается исправлять.
Скажите, я все правильно понял?
конкретнее. В каких версиях?
Если это так, то это минус в Java т.к. кроссплатформенность - основная фишка платформы.
Basil A. SidorovТак же, как и в случае любого другого приложения.
Основной вариант - файл в домашнем каталоге пользователя.
вот, писать каждому собственные велосипеды, я бы врагу не пожелал.
Хорошо бы разобраться с той ошибкой. Что там и почему.
IMHO
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374790
01101001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь
http://www-01.ibm.com/support/docview.wss?uid=swg21496098
упоминается версия win7 x64. У меня win8.1 x64.
Хотя, это документация не к java, а к SPSS (полагаю, он написан на java и иногда не работает).

Если все так, как я понял - это косяк не java, а конкретной библиотеки - Preferences. Очевидно, что выбор - хранить настройки в домашней папке или реестре - это не какое-то свойство виртуальной машины, а алгоритм библиотеки, который просто для каждой платформы выбирает свою реализацию. Типа - JNA. И вопрос скорее - почему это не было исправлено: я видел упоминания об ошибке датированные как минимум 2014-м годом.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374799
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01101001Если все так, как я понял - это косяк не java, а конкретной библиотеки - Preferences. Очевидно, что выбор - хранить настройки в домашней папке или реестре - это не какое-то свойство виртуальной машины, а алгоритм библиотеки, который просто для каждой платформы выбирает свою реализацию. Типа - JNA. И вопрос скорее - почему это не было исправлено: я видел упоминания об ошибке датированные как минимум 2014-м годом.
ищи, исправлено или нет.
Т.к. я использовал в JavaFX8 БЕЗ сторонних библиотек.
...
Рейтинг: 0 / 0
Java-приложение, где хранить конфиги.
    #39374841
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вот, писать каждому собственные велосипеды, я бы врагу не пожелал"А мужики-то не знают ...".
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java-приложение, где хранить конфиги.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]