Я пробовал различные комбинации для своей проблемы, но бесполезно.Программно получить java-предложения для пакета eclipse
Проблема
Я разрабатываю один затмение OSGi пакет для автоматической коррекции исходного кода Java. Я могу получить объект проекта Java и объект класса внутри него, который я хочу исправить. Каждый раз, когда я пытаюсь собрать предложения коды Java, как я ставлю один тестовый файл, который можно исправить (например, импорт дублирующего)
Я всегда получаю ошибки, подобные ниже
java.lang.NullPointerException
at org.eclipse.jdt.internal.ui.JavaPlugin.getImageDescriptorRegistry(JavaPlugin.java:335)
at org.eclipse.jdt.ui.text.java.CompletionProposalCollector.<init>(CompletionProposalCollector.java:103)
at org.eclipse.jdt.ui.text.java.CompletionProposalCollector.<init>(CompletionProposalCollector.java:157)
Пожалуйста, скажи мне, что я делаю неправильно , Вот мой фрагмент кода:
....
CompletionProposalCollector collectorPrjTemp= new CompletionProposalCollector(javaProject); // this line throws error
IJavaCompletionProposal[] prjProposals = collectorPrjTemp.getJavaCompletionProposals();
System.out.println("prjProposals == "+prjProposals.length);
....
Редактировать 28-Июл
Теперь, когда я включил зависимость org.eclipse.jdt.ui выше NullPointer ошибка уходит. Но теперь получение ниже ошибки
! ENTRY org.eclipse.jdt.ui 4 2 2015-07-28 13: 07: 37.926 ! СООБЩЕНИЕ Проблемы возникают при вызове кода из подключаемого модуля: «org.eclipse.jdt. уй». ! СТЕК 0
java.lang.IllegalStateException: Workbench has not been created yet.
at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:93)
at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.install(ASTProvider.java:236)
at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.<init>(ASTProvider.java:227)
at org.eclipse.jdt.internal.ui.JavaPlugin.getASTProvider(JavaPlugin.java:741)
at org.eclipse.jdt.ui.SharedASTProvider.getAST(SharedASTProvider.java:128)
at org.eclipse.jdt.internal.ui.text.correction.AssistContext.getASTRoot(AssistContext.java:119)
at org.eclipse.jdt.internal.ui.text.correction.ReorgCorrectionsSubProcessor.removeImportStatementProposals(ReorgCorrectionsSubProcessor.java:210)
at org.eclipse.jdt.internal.ui.text.correction.QuickFixProcessor.process(QuickFixProcessor.java:337)
at org.eclipse.jdt.internal.ui.text.correction.QuickFixProcessor.getCorrections(QuickFixProcessor.java:316)
at org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor$SafeCorrectionCollector.safeRun(JavaCorrectionProcessor.java:378)
at org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor$SafeCorrectionProcessorAccess.run(JavaCorrectionProcessor.java:339)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor$SafeCorrectionProcessorAccess.process(JavaCorrectionProcessor.java:335)
at org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor.collectCorrections(JavaCorrectionProcessor.java:468)
Обновление - 29-Июль
Теперь я пытаюсь создать объект верстак с помощью команды
WorkbenchAdvisor advisor=new WorkbenchAdvisor(){
public String getInitialWindowPerspectiveId(){
return "org.eclipse.rap.junit.runtime.emptyPerspective";
}
};
//Display display = Display.getCurrent(); // did not worked, gives null
//Display display = Display.getDefault(); // did not worked, gives null
Display display = PlatformUI.getDisplay(); // did not worked, gives null
PlatformUI.createAndRunWorkbench(display, advisor);
Когда я попытался ниже код
Display display = new Display();
после этого получилось ниже ошибки:
No context available outside of the request processing
Пожалуйста, прочитайте комментарии между собой и greg для моих попыток. Любая помощь/подсказка будет оценена по достоинству.
Вы используете это в плагине Eclipse, работающем в Eclipse? Похоже, что JavaPlugin не был запущен, что произойдет, если вы попытаетесь использовать его вне Eclipse. –
Я запускаю это внутреннее затмение.GetProject ("Sample"); ", мне нужно что-то делать для JavaPlugin – shaILU
Привет greg-449, Еще вопрос от вас помогает меня, я сейчас на шаг впереди. На самом деле мне нужно добавить плагин jdt.ui в качестве необходимого плагина, чтобы получить информацию из этого места (http://www.eclipse.org/forums/index.php/t/67141/). И теперь я попал в новую ошибку: «Workbench еще не создан. Java.lang.IllegalStateException: Workbench еще не создан». Теперь изучаем это. Пожалуйста, дайте мне знать, есть ли у вас какой-либо указатель. – shaILU