2011-08-09 63 views
0

我正在編寫一個插件來eclipse,我需要在給定的時間重新加載活動的目標平臺。 - 就像首選項 - >插件開發 - >目標平臺 - > Reload.button,當然是從我的插件動態。從插件中動態地重新加載目標平臺

我會想象這樣的事情會是這樣,但我不能找到入口/ MagicProvider:

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

希望你們當中有些人知道:)

回答

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。 :)

如果別人需要的一些信息,我建議考慮看看

org.eclipse.pde.internal.ui.preferences.TargetPlatformPreferencePage接近行771 - 812和方法handleReload() 和org.eclipse.pde.internal.ui.editor.targetdefinition.TargetEditor近線線231

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); 
+0

不MacOSX上工作+ eclipse Juno: 我收到一個異常: java.lang.NoClassDefFoundError:org/eclipse/pde/internal/core/target/temporary/ITargetPlatformService 適用於Linux和Win32。 – taitelman