如何在eclipse插件开发中从Intro Page打开任何eclipse向导

时间:2012-11-05 15:19:29

标签: eclipse plugins eclipse-rcp wizard

我将HTML文件用于欢迎页面。我想使用

从介绍页面打开Eclipse向导
href="http://org.eclipse.ui.intro/runAction?pluginId=MobileTalk&class=mobiletalk.intro.ShowPerspectiveIntroAction"

在班级ShowPerspectiveIntroAction中,我的代码如下:

Class c = Class.forName("tttt.ddt.plugin.project.NewTtttProjectWizard");
Wizard wizard = (Wizard) c.newInstance();
WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),wizard);
dialog.open();

但我收到错误:classnotfound:tttt.ddt.plugin.project.NewTtttProjectWizard

如何正确地从介绍页面打开任何Eclipse向导?

1 个答案:

答案 0 :(得分:2)

从查看代码我怀疑它是类加载器问题。在Eclipse / OSGI中使用Class.forName不是一种安全的做法,因为每个插件/ bundle都使用自己的类加载器,因此很多时候会发生Class Not Found Exceptions。更好的方法是通过执行以下操作来获取包含向导类的Bundle / Plugin:Platform.getBundle(“com.stackoverflow.myplugindId”),它返回Bundle的实例。然后在bundle的实例上调用.loadClass(“tttt.ddt.plugin.project.NewTtttProjectWizard”),它将使用正确的类加载器,然后一旦你有了Class的实例,就可以调用newInstance()方法解决您找不到的课程问题。希望有帮助,类加载在OSGI环境中更复杂,因为出于安全原因,每个插件都有自己的类加载器,因此我建议不要在代码中使用Class.forName。 - 邓肯