我正在开发一个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/