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