
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.12.2016, 13:33
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
Добрый день. Есть такой вопрос. Я пишу настольное java-приложение. Если я запускаю его в винде - конфиг, скорее всего, лежит примерно в той же папке, что и бинарник, а в linux - в /etc или аналогах. Вот в случае традиционных компилируемых языков, при сборке под каждую конкретную платформу я укажу, где лежат конфиги, где бинарники, где библиотеки - и т.д. И инсталлятор будет для каждой конкретной платформы свой (строго говоря, для линукса редко используется инсталлятор, скорее - собирается пакет). А как в случае java-приложения? Куда класть конфиги? Как сделать, чтобы инсталлятор был всеплатформенный? Переменные окружения трогать не хочется. По крайней мере - это будет крайней мерой. Понятно, что можно по сборке для каждой платформы, но как-то это криво. И еще вопрос: как сейчас принято хранить конфиги? Создать класс конфиг и потом серилизовать\десирилизовать его в json - это нормально, или дурной тон? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 13:46
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001, Не бывает инсталлеров под разные платформы. Под разные платформы бывает Portable сборка, которая копируется, разархивируется вручную. JSON конфиг это нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 13:58
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001как сейчас принято хранить конфиги? class Preferences - сам хранит в реестре винды, если винда. Вроде всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:01
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001Если я запускаю его в винде - конфиг, скорее всего, лежит примерно в той же папке, что и бинарник, не всегда. Бывают права в эту папку только чтение. И раздели инсталляцию приложения на его эксплуатацию (первый запуск). Совершенно разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:10
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
Petro123Бывают права в эту папку только чтение. В Винде, так же как и в линуксе есть другие каталоги для хранения конфигов. Это и ProgramData и User Home. Хранить там же где и установлено приложение можно, но не всегда хорошо - зависит от того кто и как пользуется вашим приложением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:16
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
Blazkowicz, да. Я об этом и говорил. Что в больших фирмах AD с правами админа всем сразу ставит приложение и потом юзверь уже с пониженными правами эксплуатирует. Что инсталлятор, что программа может узнать эти пути. Если лень, то выше класс есть без всяких путей. Так что вариантов аффтару - море. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:19
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
2Blazkowicz. Где-то я натыкался на кроссплатформенный инсталлятор, но на практике не пробовал. Но чисто теоретически, на java я могу и сам написать инсталлятор. Как в данной ситуации реализовать кроссплатформенность? Прямо в процессе собирать jar-файл, чтобы нужные пути запихнуть вовнутрь? Менять переменные окружения? 2Petro123 А не в винде как? Ну, все равно спасибо. Почитаю сам. А можно поподробнее про "инсталляцию приложения на его эксплуатацию (первый запуск)". Разница, конечно, очевидна, но я над ней еще не думал. Что я не учитываю? Я так же понимаю, что под линукс лучше собирать пакет. Просто я еще не задумывался над самим процессом установки приложения. В процессе инсталляции нужно указать какие-то настройки. Может - действительно их лучше указывать при первом запуске? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:25
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001, - открытие приложения - читаем class Preferences - если пусто, то положение окна и размер окна берём и устанавливаем из константы модуля W\H - при закрытии всё пишем в class Preferences ... Рессурсы для чтения похожим образом, только не нужна запись(могут быть рядом с jar) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:29
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
Да, спасибо. Наверное, Properties - действительно самый правильный путь. Я совсем не подумал, что на одном компе могут быть разные пользователи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 14:36
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001Я совсем не подумал, что на одном компе могут быть разные пользователи могут. Ещё лучше, если при очистке твоих данных для записи, приложение не ругается, а работате как при ПОСЛЕ первой установки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 15:54
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
Так оно и будет. Всем спасибо за просветление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 21:23
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
Полностью согласен со всеми ораторами. На самом деле можно смело брать JDK-шный вариант управления конфигурациями. И если его будет мало - то пойти в mvn-repository и просто посмотреть самый рейтинговый в нужной категории. http://mvnrepository.com/open-source/config-libraries Не факт что он будет объективно лучший но комьюнити не даст вам погибнуть от нехватки examples и всегда можно спросить у опытных дескыть что и как. Я-бы сам так и поступал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2016, 23:42
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
Для настольного приложения изменяемый конфиг должен лежать в домашней папке текущего пользователя. Для винды есть соответствующий API, возвращающий путь к AppData, в линуксе принято использовать ~/.config/<appname>. Неизменяемый имхо лучше держать в папке самого приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2016, 21:46
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
Столкнулся с такой проблемой - просто нет слов. В общем, попробовал воспользоваться библиотекой Preferences - получил следующую ошибку: WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5. Поиск по ошибке показал. что в некоторых версиях Windows настройки сохраняются в ветку HKLM вместо HKCU. Проблеме много лет - и насколько я понял - ее никто не собирается исправлять. Скажите, я все правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2016, 09:17
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001А как в случае java-приложения? Куда класть конфиги?Так же, как и в случае любого другого приложения. Основной вариант - файл в домашнем каталоге пользователя. Если файлов больше одного - подкаталог в домашнем каталоге пользователя.Как сделать, чтобы инсталлятор был всеплатформенный?Это невозможно просто по определению. Если ява-рантайм уже есть - инсталятор как таковой не требуется. Если рантайма ещё нет, то устанавливать его будет нативное приложение. P.S. Как уже сказали - разделите два этапа: 1. Установка и обновление вашего приложения на компьютере пользователя. 2. Запуск и настройка вашего приложения пользователем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2016, 13:47
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001в некоторых версиях Windows настройки сохраняются в ветку HKLM вместо HKCU. Проблеме много лет - и насколько я понял - ее никто не собирается исправлять. Скажите, я все правильно понял? конкретнее. В каких версиях? Если это так, то это минус в Java т.к. кроссплатформенность - основная фишка платформы. Basil A. SidorovТак же, как и в случае любого другого приложения. Основной вариант - файл в домашнем каталоге пользователя. вот, писать каждому собственные велосипеды, я бы врагу не пожелал. Хорошо бы разобраться с той ошибкой. Что там и почему. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2016, 15:57
|
|||
|---|---|---|---|
|
|||
Java-приложение, где хранить конфиги. |
|||
|
#18+
Здесь http://www-01.ibm.com/support/docview.wss?uid=swg21496098 упоминается версия win7 x64. У меня win8.1 x64. Хотя, это документация не к java, а к SPSS (полагаю, он написан на java и иногда не работает). Если все так, как я понял - это косяк не java, а конкретной библиотеки - Preferences. Очевидно, что выбор - хранить настройки в домашней папке или реестре - это не какое-то свойство виртуальной машины, а алгоритм библиотеки, который просто для каждой платформы выбирает свою реализацию. Типа - JNA. И вопрос скорее - почему это не было исправлено: я видел упоминания об ошибке датированные как минимум 2014-м годом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2016, 16:17
|
|||
|---|---|---|---|
Java-приложение, где хранить конфиги. |
|||
|
#18+
01101001Если все так, как я понял - это косяк не java, а конкретной библиотеки - Preferences. Очевидно, что выбор - хранить настройки в домашней папке или реестре - это не какое-то свойство виртуальной машины, а алгоритм библиотеки, который просто для каждой платформы выбирает свою реализацию. Типа - JNA. И вопрос скорее - почему это не было исправлено: я видел упоминания об ошибке датированные как минимум 2014-м годом. ищи, исправлено или нет. Т.к. я использовал в JavaFX8 БЕЗ сторонних библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2123333]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 346ms |

| 0 / 0 |
