2014-10-27 5 views
1

Я пытаюсь разработать плагин, который взаимодействует с исходным кодом Java. Я объявил точку расширения org.eclipse.jdt.core.compilationParticipant.Eclipse CompilationParticipant не запускается

<extension point="org.eclipse.jdt.core.compilationParticipant"> <compilationParticipant class="compilation.IDRCCompilationParticipant" createsProblems="false" id="IDRC.IDRCcompilationParticipant" modifiesEnvironment="false" requiredSourceLevel="1.5"> </compilationParticipant> </extension>

В моем классе IDRCcompilationParticipant, я пытаюсь напечатать что-то каждый раз, когда что-либо изменилось в исходном коде.

public class IDRCCompilationParticipant extends CompilationParticipant { 

public IDRCCompilationParticipant() { 
    // TODO Auto-generated constructor stub 
} 
@Override 
public void buildFinished(IJavaProject project) { 
    // do nothing by default 

    System.out.println("build finished"); 
} 
public void reconcile(ReconcileContext context) { 
    // do nothing by default 
    System.out.println("reconcile"); 

     System.out.println("Content changed!"); 
} 
} 

Во время тестирования плагина, я ожидал, чтобы напечатать «Содержание изменилось!», При любом изменении способа и т.д. произошел в любом исходном коде в любом Java проекта. Но ничего не запускает метод public void reconcile(ReconcileContext context). Может ли кто-нибудь предложить, что делать?

+0

Не уверен, что Sysout работает с плагином-затмением. Попробуйте добавить туда другое логическое/всплывающее сообщение. –

ответ

2

Я нашел ответ для этого. Необходимо переопределить еще два метода от CompilationParticipant

@Override 
public int aboutToBuild(IJavaProject project) { 

    return READY_FOR_BUILD; 
} 

/* (non-Javadoc) 
* @see org.eclipse.jdt.core.compiler.CompilationParticipant#isActive(org.eclipse.jdt.core.IJavaProject) 
*/ 
@Override 
public boolean isActive(IJavaProject project) { 
    // TODO Auto-generated method stub 
    return true; 
} 

Теперь он отлично работает.

Смежные вопросы