2010-04-26 1 views
3

Использование Eclipse средства Jdt, вы можете пройти по AST Явы фрагменты кода следующим образом:Невозможно включить Eclispe JDT codeAssist объектов вне Plug-in

ASTParser ASTparser = ASTParser.newParser(AST.JLS3); 
ASTparser.setSource("package x;class X{}".toCharArray()); 
ASTparser.createAST(null).accept(...); 

Но при попытке выполнить код полный выбор & его код кажется, что я должен сделать это в виде плагина в применении, так как я должен писать коды, как

IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(somePath)); 
ICodeAssist i = JavaCore.createCompilationUnitFrom(f); 
i.codeComplete/codeSelect(...) 

есть в любом случае, что я могу, наконец, получить автономное приложение Java, которое включает в себя код JDT полный/выбор объектов ?

thx много! ши Куй


Я заметил, что с помощью org.eclipse.jdt.internal.codeassist.complete.CompletionParser я могу разобрать фрагмент кода, а также.

CompletionParser parser =new CompletionParser(new ProblemReporter(
     DefaultErrorHandlingPolicies.proceedWithAllProblems(), 
     new CompilerOptions(null), 
     new DefaultProblemFactory(Locale.getDefault())), 
     false); 
org.eclipse.jdt.internal.compiler.batch.CompilationUnit sourceUnit = 
new org.eclipse.jdt.internal.compiler.batch.CompilationUnit(
    "class T{f(){new T().=1;} \nint j;}".toCharArray(), "testName", null); 
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0); 
CompilationUnitDeclaration unit = parser.dietParse(sourceUnit, compilationResult, 25); 

Но у меня есть 2 вопроса: 1. Как retrive вспомогательную информацию? 2. Как я могу указать путь к контуру или исходный путь для компилятора для поиска типа/метода/информации о поле?

ответ

1

Я так не думаю, если вы не предоставите свою собственную реализацию ICodeAssist.

Как упоминает Performing code assist on Java code, элементы, допускающие эту манипуляцию, должны реализовывать ICodeAssist.

Есть два вида манипуляции:

  • завершающих Код - вычислить завершение маркеров Java.
  • Выбор кода - ответьте на элемент Java, указанный выбранным текстом заданного смещения и длины.

В модели Java есть два элемента, реализующих этот интерфейс: IClassFile и ICompilationUnit.
Выполнение кода и выбор кода позволяют получить ответы только на файл класса, если он подключен к источнику.

Вы можете попробовать открыть файл outside of any workspace (как this FAQ), но результат не будет выполнять ICodeAssist.

Таким образом, IFilemost of the time приходит from a workspace location.

+0

Я вижу. Спасибо за Вашу информацию –