2011-06-21 53 views
2

原因是首選項 - 系統嘗試在「普通」用戶在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); 
    } 

我試着用啞工廠setpreferences但仍然問題裝載

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

存在如何解決這個問題?

回答

1

您可能想要使用Preferences pref = Preferences.userRoot().node("example"); ... systemRoot適用於所有用戶的系統範圍首選項。

+0

對於不同用戶在共享計算機上有自己的偏好的情況,我認爲這是更好的方法。 – Atreys

+0

這是正確的。該錯誤的真正原因是constantlearner要求系統首選項,這需要管理員(Linux上的root)。但是您可以將系統首選項和用戶首選項的位置重定向到JVM上具有系統屬性的其他位置。您將位置更改爲可寫目錄。但是,將系統屬性設置爲可由所有人寫入的位置可能不是一個好主意。 – dlaidlaw