【问题标题】:Eclipse CompilationParticipant is not triggeringEclipse CompilationParticipant 未触发
【发布时间】:2014-10-27 20:40:55
【问题描述】:

我正在尝试开发一个与 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) 方法。谁能建议怎么做?

【问题讨论】:

  • 不确定 Sysout 是否适用于 eclipse-plugin。尝试在那里添加一些其他逻辑/弹出消息进行验证。

标签: java eclipse eclipse-plugin interactive


【解决方案1】:

我找到了答案。必须从 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;
}

现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多