Eclipse CompilationParticipant没有触发

时间:2014-10-27 20:40:55

标签: java eclipse eclipse-plugin interactive

我正在尝试开发一个与java源代码交互操作的插件。我声明了扩展点org.eclipse.jdt.core.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)方法。谁能建议做什么?

1 个答案:

答案 0 :(得分: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;
}

现在工作正常。