在保存文件之前,自定义编译器错误不会被删除(修复后)
Custom compiler error isnt removed (after fixing) until file is saved
我做的每一个注释处理器似乎都有这个问题。比如一个@Constant
注解:
package annotations;
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface Constant {
}
处理器:
package processor;
@SupportedAnnotationTypes("annotations.Constant")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public final class ConstantProcessor extends AbstractProcessor {
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for(Element element : roundEnv.getElementsAnnotatedWith(Constant.class)) {
Set<Modifier> modifiers = element.getModifiers();
if(!modifiers.contains(Modifier.PUBLIC) || !modifiers.contains(Modifier.STATIC) || !modifiers.contains(Modifier.FINAL)) {
processingEnv.getMessager().printMessage(Kind.ERROR, "A constant must be public, static and final", element);
}
}
return false;
}
}
如果用 @Constant
注释的字段不是 public static final
,这将引发编译器错误。
问题是,在我保存文件之前不会出现错误。与错误消失相同。如果我解决了问题,错误会一直存在,直到我保存文件。
我将 Eclipse Luna 与 Java 8u31 一起使用。有什么办法可以防止这种情况吗?
我做的每一个注释处理器似乎都有这个问题。比如一个@Constant
注解:
package annotations;
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface Constant {
}
处理器:
package processor;
@SupportedAnnotationTypes("annotations.Constant")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public final class ConstantProcessor extends AbstractProcessor {
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for(Element element : roundEnv.getElementsAnnotatedWith(Constant.class)) {
Set<Modifier> modifiers = element.getModifiers();
if(!modifiers.contains(Modifier.PUBLIC) || !modifiers.contains(Modifier.STATIC) || !modifiers.contains(Modifier.FINAL)) {
processingEnv.getMessager().printMessage(Kind.ERROR, "A constant must be public, static and final", element);
}
}
return false;
}
}
如果用 @Constant
注释的字段不是 public static final
,这将引发编译器错误。
问题是,在我保存文件之前不会出现错误。与错误消失相同。如果我解决了问题,错误会一直存在,直到我保存文件。
我将 Eclipse Luna 与 Java 8u31 一起使用。有什么办法可以防止这种情况吗?