我正在开发一个Eclipse插件,并且想提出他的一些建议,如果不加以处理将成为编译器错误,因此我尝试创建一个Compilation Participant,该编译器无论发生什么都会产生编译错误,但是该项目仍然可以编译,而且似乎没有工作。
我的代码:

public class compilerNotificator extends CompilationParticipant{
    @Override
    public int aboutToBuild(@SuppressWarnings("unused") final IJavaProject project){
        return 0;
    }
    @Override
    public boolean isActive(@SuppressWarnings("unused") final IJavaProject project){
        return true;
    }
    @Override
    public void reconcile(final ReconcileContext context){
        final CategorizedProblem[] problems = new CategorizedProblem[1];
        problems[0] = new CategorizedProblem() {

            @Override
            public void setSourceStart(final int sourceStart) {
                // TODO Auto-generated method stub

            }

            @Override
            public void setSourceLineNumber(final int lineNumber) {
                // TODO Auto-generated method stub

            }

            @Override
            public void setSourceEnd(final int sourceEnd) {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean isWarning() {
                // TODO Auto-generated method stub
                return true;
            }

            @Override
            public boolean isError() {
                // TODO Auto-generated method stub
                return true;
            }

            @Override
            public int getSourceStart() {
                // TODO Auto-generated method stub
                return 3;
            }

            @Override
            public int getSourceLineNumber() {
                // TODO Auto-generated method stub
                return 10;
            }

            @Override
            public int getSourceEnd() {
                // TODO Auto-generated method stub
                return 34;
            }

            @Override
            public char[] getOriginatingFileName() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public String getMessage() {
                // TODO Auto-generated method stub
                return "This is some fucked up shit";
            }

            @Override
            public int getID() {
                // TODO Auto-generated method stub
                return 1000129;
            }

            @Override
            public String[] getArguments() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public String getMarkerType() {
                // TODO Auto-generated method stub
                return "Bad";
            }

            @Override
            public int getCategoryID() {
                // TODO Auto-generated method stub
                return 5;
            }
        };
        context.putProblems("test", problems);
    }
}


匿名类仅用于测试目的,没有任何意义,但应该被认为是触发错误的类,而不是引发错误的类。

现在,以上代码位于插件首选项页面的代码中(在Windows中->首选项)。
谢谢!

顺便说一句,我已经尝试过将aboutToBuild的返回值更改为IProblem.AnnotaionCircularRef(类似这样),但是得到了相同的结果。

最佳答案

解决了。

您需要像这样将扩展点添加到plugin.xml中:

<extension point="org.eclipse.jdt.core.compilationParticipant">
<compilationParticipant
class="Path.To.Package.MyCompilationParticipant"
id="Path.To.Package.MyCompilationParticipant">
</compilationParticipant>
</extension>

关于java - 通过编译参与者的自定义编译器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24195142/

10-08 22:33
查看更多