我正在尝试开发一个与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)
方法。谁能建议做什么?
答案 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;
}
现在工作正常。