我似乎无法使用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。
非常感谢任何帮助。
答案 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。
可能只是因为没有创建文件或者文件的所有者没有足够的权限吗?或类似的东西?