2

我似乎无法使用 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:无法获得文件锁定。

我目前正在使用 Java 1.6 在 Linux 和 Unix 上运行它。我希望我遗漏了一些明显的东西,因为我的 Java 应用程序可以在同一系统上成功使用 java.util.prefs.Preferences。

任何帮助将不胜感激。

4

2 回答 2

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() ,因为首选项保存在预定义的时间间隔中,并且在程序终止时保存。

于 2009-11-04T14:15:11.210 回答
1

这似乎是相关的。

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

于 2009-05-09T04:39:32.237 回答