Как да отворите който и да е съветник за eclipse от Intro Page в разработката на плъгини за 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 от въвеждащата страница?


person user1799630    schedule 05.11.2012    source източник


Отговори (1)


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

person Duncan Krebs    schedule 05.11.2012
comment
Благодаря! работи, но след като създам нов проект според съветника за затъмнение, щраквам върху Готово, съветникът не е затворен. когато използвам съветника на eclipse, за да създам проект в самия плъгин, той работи добре. ето изключението: !ENTRY org.eclipse.ui 4 0 2012-11-06 11:10:20.701 !MESSAGE Необработено изключение за цикъл на събитие !STACK 0 java.lang.NullPointerException в tttt.ddt.plugin.project.NewTtttProjectWizard.performFinish (NewTtttProjectWizard.java:130) - person user1799630; 06.11.2012
comment
кодът е: getWorkbench().getWorkingSetManager().addToWorkingSets(proj, workingSets); // ред 130 @Дънкан Кребс - person user1799630; 06.11.2012
comment
Това звучи като различен въпрос. Не съм сигурен дали вашият съветник разширява съветника за нов проект. Бих предложил да добавите точка на прекъсване за NPE и да видите какво е нула и да продължите оттам. Или спрете на NPE, или на първия ред в performFinish() на вашия съветник. - Дънкан - person Duncan Krebs; 06.11.2012