Eclipse Preference存储持久性

TJR*_*TJR 12 eclipse eclipse-rcp

我有一个多用户/位置RCP应用程序,目前使用多个用户可配置选项.一些偏好是针对站特定的,一些是特定于用户的.

选项来自首选项存储,它将*.prefs文件保存到"workspace.metadata.plugins\org.eclipse.core.runtime.settings".

如果我们只使用一台机器/用户,这将没有问题.但是如果用户要去另一个站,则用户将使用为该站设置的任何偏好.

是否可以为持久性(而不是文件)指定另一种形式?

Von*_*onC 9

根据eclipse wiki,首选项是基于文件的,并存储:

  • 对于每个安装(但这可能因多用户安装而异),存储在的文件中<eclipse_home>/eclipse/configuration/.settings/.
    每个插件通常有一个文件,带有.prefs扩展名.
    请注意,很少有插件使用安装范围的首选项.
  • 对于每个工作区,存储在的文件中<workspace>/.metadata/.plugin/org.eclipse.core.runtime/.settings.
    每个插件通常有一个文件,带有.prefs扩展名.
  • 对于每个项目 - 对于项目级设置 - 存储在.settings项目文件夹的子目录中的文件

因此,如果文件选项保留,您可能需要:

  • 在用户特定的目录中手动导出/重新导入会话设置(繁琐)
  • 或制作某种自动化机制:
    • 将设置导出到HKEY_CURRENT_USER/Software/MyRCP/...应用程序出口处的用户注册表(),以及
    • 通过读取这些注册表项并覆盖.prefs本地workspace.metadata.plugins\org.eclipse.core.runtime.settings目录中的文件来导入它们
  • 或者通过某种特定于用户的链接共享这些设置(围绕RCP启动的包装器将负责建立正确的链接,例如,即使在具有联结的 Windows )


Fel*_*ixM 8

听起来您需要将您的偏好存储在所有用户/机器都可以到达的中心位置.这意味着你必须实现自己的IPersistentPreferencesStore.然后你可以覆盖org.eclipse.jface.preference.PreferencePage#doGetPreferenceStore()使用它.

更大的问题是如何实现中央首选项存储,但这取决于您使用的技术.通常,如果您的项目使用中央服务器,您可能应该在那里存储您的首选项.例如,如果您的项目已经使用了关系数据库,那么一种解决方案是创建适当的数据库表并实现IPersistentPreferencesStore通过JDBC访问这些表.


小智 5

您应该阅读有关多用户安装的信息

在我们的示例中,我们通过将config.ini设置为包括以下内容,将每用户首选项与应用程序配置分开:

osgi.instance.area=@user.home/Application Data/earthrise
osgi.configuration.area=@user.home/Local Settings/Application Data/earthrise/144/configuration
osgi.sharedConfiguration.area=c:/program files/earthrise/configuration
osgi.configuration.cascaded=true
Run Code Online (Sandbox Code Playgroud)

结果是,用户设置的任何首选项都存储在其漫游配置文件中,但特定于应用程序的配置数据存储在"本地设置"中.

这不能解决具有特定于特定工作站的用户偏好的问题,但确实允许每个用户具有他们自己的偏好.

这样做的一个问题是,eclipse错误日志文件将存储在实例区域中,并在其漫游配置文件中被携带 - 实际上并不是您想要的.您可以在插件中编写代码.请参阅eclipse bugzilla的解决方法 - 搜索256502

  • 不确定这是否解决了有关在本地文件以外保存的原始问题,但它使用正确的参考和一个有用的示例解决了我的问题.谢谢! (2认同)