从插件动态重新加载eclipse中的目标平台

时间:2011-08-09 15:18:00

标签: eclipse eclipse-plugin

我正在为eclipse编写一个插件,我需要在给定时间重新加载活动目标平台。 - 就像首选项一样 - >插件开发 - >目标平台 - > Reload.button,但当然是动态地来自我的插件。

我会想象这样的事情,但我找不到入口/ MagicProvider:

MagicProvider.getTargetPlatforms().getActive().reload();

希望你们中的一些人知道这个伎俩:)

3 个答案:

答案 0 :(得分:5)

尝试了Max的方法,但似乎没有用。在搜索eclipse源代码后我发现,ITargetDefinition只是一个工作副本,必须保存。所以代码将是:

org.eclipse.pde.internal.core.target.provisional.ITargetPlatformService service = org.eclipse.pde.internal.core.PDECore.getDefault().acquireService(ITargetPlatformService.class.getName());
org.eclipse.pde.internal.core.target.provisional.ITargetDefinition target = service.getWorkspaceTargetHandle().getTargetDefinition();
target.resolve(IProgressMonitor);
org.eclipse.pde.internal.core.target.provisional.LoadTargetDefinitionJob.load(target);

但是指导Max的信用额度。 :)

如果其他人需要一些信息,我建议您查看

第771 - 812行附近的

org.eclipse.pde.internal.ui.preferences.TargetPlatformPreferencePage和方法handleReload() 和org.eclipse.pde.internal.ui.editor.targetdefinition.TargetEditor靠近第231行

答案 1 :(得分:3)

你走了:

org.eclipse.pde.internal.core.target.provisional.ITargetPlatformService service = org.eclipse.pde.internal.core.PDECore.getDefault().acquireService(ITargetPlatformService.class.getName());
org.eclipse.pde.internal.core.target.provisional.ITargetDefinition target = service.getWorkspaceTargetHandle().getTargetDefinition();
target.resolve(IProgressMonitor);

答案 2 :(得分:0)

在Eclipse 2020-09中,它对我来说就像...

import org.eclipse.pde.core.target.ITargetDefinition;
import org.eclipse.pde.core.target.ITargetPlatformService;
import org.eclipse.pde.core.target.LoadTargetDefinitionJob;
...
    BundleContext context = ... from Activator.start() method
    ServiceReference<ITargetPlatformService> ref = context.getServiceReference(ITargetPlatformService.class);
    ITargetPlatformService service = context.getService(ref);
    ITargetDefinition def = service.getWorkspaceTargetDefinition();
    def.resolve(new NullProgressMonitor());
    LoadTargetDefinitionJob.load(def);

在plugin.xml中添加依赖项org.eclipse.pde.core