Eclipse:用于导出首选项的 Headless eclipse 插件

Eclipse: Headless eclipse plugin to export preferences

我使用以下代码制作了一个 headless 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);

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

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

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

另请注意,org.eclipse.core.runtime.Preferences class 有一个辅助方法来执行此导出。您可以调用以下代码来替换您的代码:

public static void exportPreferences(IPath path) throws CoreException

要获得 'configuration' 范围,仅使用:

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