0

我的欢迎页面使用 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 向导?

4

1 回答 1

2

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

于 2012-11-05T19:49:14.113 回答