Использование java.util.prefs.Preferences в Jython - PullRequest
2 голосов
/ 08 мая 2009

Кажется, у меня проблемы с хранением настроек Java с использованием скрипта Jython. Если в Jython 2.5 beta я использую:

clazz = Class.forName('mypackage.myclass')
prefs = Preferences.userNodeForPackage(clazz);
# or Preferences.userRoot()
prefs.put('propertyname', 'yes')

Настройки не сохраняются. Если я тогда добавлю:

prefs.flush()

Я получаю

java.util.prefs.BackingStoreException: Не удалось получить блокировку файла.

В настоящее время я работаю в Linux и Unix с использованием Java 1.6. Я надеюсь, что мне не хватает чего-то очевидного, поскольку мои Java-приложения могут успешно использовать java.util.prefs.Preferences в той же системе.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2009

В комментариях к вашему вопросу и ответу вы заявляете, что он пытается написать /etc/.java/.systemPrefs. Я не думаю, что это на самом деле правильно.

clazz = Class.forName('mypackage.myclass')
prefs = Preferences.userNodeForPackage(clazz);
# or Preferences.userRoot()
prefs.put('propertyname', 'yes')

Вы используете Preferences.userNodeForPackage, поэтому вы получите .userPrefs. Они расположены в /home/[user]/.java и должны быть доступны для записи.

С помощью systemPrefs вы можете получить проблемы с правами на Linux. Настройки хранятся в /etc/.java/.systemPrefs по умолчанию. Если этот каталог недоступен (например, если вы просто скопировали jre в свою систему), класс FileSystemPreferences используется для записи настройки возвращаются к [java.home] /. systemPrefs.

Вызывать prefs.flush () не нужно, так как настройки сохраняются в заданном интервале и при завершении вашей программы.

1 голос
/ 09 мая 2009

Это казалось актуальным .

Может ли быть так, что файл не создан или у владельца файла недостаточно прав? Или что-то в этом роде?

...