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

あなたのコードを見ると、クラスローダーの問題であると思われます。Class.forName を使用することは、Eclipse/OSGI では安全な方法ではありません。各プラグイン/バンドルが独自のクラス ローダーを使用し、その結果、Class Not Found 例外が何度も発生するためです。より良い方法は、Bundle のインスタンスを返す Platform.getBundle("com.stackoverflow.myplugindId") を実行して、ウィザード クラスを含む Bundle/Plugin を取得することです。次に、バンドルのインスタンスで、正しいクラス ローダーを使用する .loadClass("tttt.ddt.plugin.project.NewTtttProjectWizard") を呼び出し、クラスのインスタンスを取得したら、newInstance() メソッドを呼び出すことができます。クラスが見つからない問題を解決します。それが役立つことを願って、OSGI 環境では、セキュリティ上の理由からすべてのプラグインが独自のクラス ローダーを持っているため、クラスの読み込みはより複雑になるため、コードで Class.forName を使用しないことをお勧めします。- ダンカン

于 2012-11-05T19:49:14.113 に答える