在Jython中使用java.util.prefs.Preferences

时间:2009-05-08 16:45:11

标签: java linux jython preferences

我似乎无法使用Jython脚本存储Java首选项。如果在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 个答案:

答案 0 :(得分:2)

在您对问题的评论和答案中,您声明它尝试编写/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 :(得分:1)

这似乎relevant

可能只是因为没有创建文件或者文件的所有者没有足够的权限吗?或类似的东西?