我正在尝试开发一个与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)
方法。谁能建议该怎么做?
最佳答案
我找到了答案。必须重写 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;
}
现在工作正常。
关于java - Eclipse 编译参与者未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26596451/