代码之家  ›  专栏  ›  技术社区  ›  Har

Eclipse:导出首选项的无头Eclipse插件

  •  1
  • Har  · 技术社区  · 6 年前

    我使用以下代码制作了一个无头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没有返回我期望的结果,这是所有首选项的根。

    我怎样才能得到所有的偏好?不仅是工作区偏好还是默认偏好,还有整个批次?

    1 回复  |  直到 6 年前
        1
  •  1
  •   greg-449    6 年前

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

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

    public static void exportPreferences(IPath path) throws CoreException
    

    要仅获取“配置”作用域,请使用:

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