我正在为eclipse编写一个插件,我需要在给定时间重新加载活动目标平台。 - 就像首选项一样 - >插件开发 - >目标平台 - > Reload.button,但当然是动态地来自我的插件。
我会想象这样的事情,但我找不到入口/ MagicProvider:
MagicProvider.getTargetPlatforms().getActive().reload();
希望你们中的一些人知道这个伎俩:)
答案 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