在保存文件之前,自定义编译器错误不会被删除(修复后)

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 一起使用。有什么办法可以防止这种情况吗?

在保存文件之前,编译器不会运行。这就是无法确定编译器错误已修复的原因(直到保存文件)。不,没有什么可以解决的(这是它设计的工作方式)。

我不知道如何在不保存的情况下让错误消失(不确定是否可行),但我想下一个最好的方法是自动保存你的文件。

看看these plugins。您还可以调整他们保存的频率。