【问题标题】:Eclipse: Headless eclipse plugin to export preferencesEclipse:用于导出首选项的无头 Eclipse 插件
【发布时间】:2019-01-11 20:03:54
【问题描述】:

我使用以下代码制作了一个无头 Eclipse 插件:

public class Application implements IApplication {

    @Override
    public Object start(IApplicationContext context) throws Exception {
        System.out.println("ok this is it!");
        IPreferencesService service = Platform.getPreferencesService();
        try {
            FileOutputStream fout = new FileOutputStream(new File("c:/temp/ohno.epf"));
            service.exportPreferences(service.getRootNode(), fout, null);

        }catch(Exception e)
        {

        }
        return null;
    }

为什么会这样

service.exportPreferences(service.getRootNode(), fout, null);

写一个空文件?我所期待的行为与通过 File->Export [Preferences] 菜单导出 Preferences 相同。一定是 service.getRootNode 没有返回我所期望的,这是所有偏好的根源。

如何获得所有偏好?不仅是工作区首选项或默认选项,还有全部?

【问题讨论】:

  • 有趣的项目。似乎您缺少scope 的首选项,如in the official docs 所述。此外,this question 试图做类似的事情。如果您分享您的项目,我愿意合作。
  • Here 更多相关信息。

标签: eclipse eclipse-plugin


【解决方案1】:

当您运行此代码时,Eclipse 会为运行创建一个新工作区。此工作区中的所有首选项最初都设置为默认值。 exportPreferences 方法不会导出设置为默认值的首选项 - 因此您不会导出任何内容。您需要在此工作区中设置一些首选项来测试此代码。

还要注意org.eclipse.core.runtime.Preferences 类有一个辅助方法来执行此导出。您可以将代码替换为调用:

public static void exportPreferences(IPath path) throws CoreException

要获得“配置”范围,请仅使用:

IEclipsePreferences node = (IEclipsePreferences)service.getRootNode().node(ConfigurationScope.SCOPE);

【讨论】:

  • 我希望导出全局 Eclipse 设置而不是工作区设置。那是上面 cmets 中提到的范围吗?
  • 不确定您所说的“全球”是什么意思。首选项范围是“配置”、“实例”、“项目”和“默认”。 'configuration' 是最接近的 - 请参阅更新以获取此答案(但在您测试时它仍然是空的)。
  • 好的,我明白你在说什么。所有 Eclipse 首选项都基于工作区。除了工作区存储之外,首选项不会存储在其他任何地方。我没有意识到这一点,我认为无论您使用什么工作空间,都有“全局”设置始终存在。
  • 不完全。 “配置”范围设置通常存储在 Eclipse 安装的“配置”目录中,因此或多或少是全局的。但是当您测试您的代码时,Eclipse 会创建一个虚拟配置,这样您就不会损坏主要的 Eclipse 设置。只有少数首选项具有配置范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
相关资源
最近更新 更多