java - Eclipse 编译参与者未触发

标签 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)方法。谁能建议该怎么做?

最佳答案

我找到了答案。必须重写 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/

相关文章:

java - 将所有输出定向到 MessageConsole

java - Web 应用程序在 jni 崩溃时重新启动?

c++ - Eclipse 中的 C/C++,我可以使用 #define 来设置断点,但只能在单步执行代码时使用吗?

Eclipse 插件项目资源管理器上下文菜单

eclipse - 无法在 Eclipse 中创建网络连接

android - "No repository found"- 通过 Eclipse 更新 Android ADT

java - JformDesigner-Eclipse Main 将无法运行

java - HashSet 包含方法,奇怪的行为

java - Mockito 中带有 doNothing() 的非 void 方法?

java - 行程优化(最大化您的中途停留时间)