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

我似乎无法使用Jython脚本存储Java首选项。 如果在Jython 2.5testing版中,我使用:

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

偏好不存储。 如果我接着添加:

 prefs.flush() 

我明白了

java.util.prefs.BackingStoreException:无法获取文件locking。

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

任何帮助将不胜感激。

    在你的问题和答案你的意见,它试图写/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()不应该是必须的,因为首选项是以预定义的时间间隔保存的,并且程序终止。

    这似乎相关 。

    难道只是没有创建一个文件或文件的所有者权限不足? 或类似的东西?