Как открыть любой мастер затмений из начальной страницы в разработке плагинов Eclipse

Я использую HTML-файл для моей страницы приветствия. Я хочу открыть Eclipse Wizard со страницы вступления, используя

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 ответ

Судя по вашему коду, я подозреваю, что это проблема загрузчика классов. Использование Class.forName не является безопасной практикой в ​​Eclipse/OSGI, потому что каждый плагин / пакет использует свой собственный загрузчик классов, и в результате часто возникает исключение Class Not Found. Лучший подход состоит в том, чтобы получить Bundle/Plugin, содержащий ваш класс мастера, выполнив это: Platform.getBundle("com.stackru.myplugindId"), который возвращает экземпляр Bundle. Затем в экземпляре пакета вызовите.loadClass("tttt.ddt.plugin.project.NewTtttProjectWizard"), который будет использовать правильный загрузчик класса, а затем, когда у вас есть экземпляр класса, вы можете вызвать метод newInstance(), который будет решить проблему класса не найдена. Надеюсь, это поможет, загрузка классов более сложна в среде OSGI, потому что каждый плагин имеет собственный загрузчик классов по соображениям безопасности, поэтому я не советую использовать Class.forName в вашем коде. - Дункан

Другие вопросы по тегам