Как открыть любой мастер затмений из начальной страницы в разработке плагинов 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 в вашем коде. - Дункан