【问题标题】:Preferences getting locked偏好被锁定
【发布时间】:2011-06-21 13:02:23
【问题描述】:

原因是首选项系统尝试在“普通”用户在 Linux 工作站上没有写入权限的位置写入锁定文件。 (/opt/j2se/linux/ix86/j2se_1.5.0_12/jre/.systemPrefs/.system.lock)

1)我不能给目录写权限。

2)我正在做这样的事情:

private void loadSamplePreferences() throws IOException,
            BackingStoreException, InvalidPreferencesFormatException {
        ClassLoader contextClassLoader = Thread.currentThread()
                .getContextClassLoader();
        InputStream stream = contextClassLoader
                .getResourceAsStream("example.xml");

        Preferences pref = Preferences.systemRoot().node("example");

        pref.removeNode();


        Preferences.importPreferences(stream);
    }

我尝试使用虚拟工厂设置首选项,但加载时仍然存在问题

 System.setProperty("java.util.prefs.PreferencesFactory", "DisabledPreferencesFactory");
       System.setProperty("java.util.prefs.systemRoot", targetpath);
       System.setProperty("java.util.prefs.userRoot", targetpath);

如何解决?

【问题讨论】:

    标签: java preferences


    【解决方案1】:

    您可能希望使用Preferences pref = Preferences.userRoot().node("example"); ... systemRoot 旨在为所有用户提供系统范围的首选项。

    【讨论】:

    • 对于不同用户在共享计算机上有自己偏好的情况,我认为这是更好的选择。
    • 这是正确的。错误的真正原因是 constantlearner 要求系统首选项,这需要管理员(Linux 上的 root)。但是您可以使用 JVM 上的系统属性将系统首选项和用户首选项的位置重定向到不同的位置。您将位置更改为可写目录。但是,将系统属性放在所有人都可写的位置可能不是一个好主意。
    猜你喜欢
    • 2019-11-11
    • 2020-11-05
    • 2019-05-19
    • 2015-05-24
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多