编译测试库不编译接口的静态方法(Java 8)

编译测试库不编译接口的静态方法(Java 8),java,java-8,annotation-processor,google-compile-testing,Java,Java 8,Annotation Processor,Google Compile Testing,Java8的一个特性是能够向接口添加静态方法。我正在开发基于注释处理器的java库,名为 我在用谷歌。当我尝试测试以下接口的编译时: public interface AppDataSource { static void execute(DaoPerson daoPerson) { daoPerson.insert(new Person()); } } 使用如下代码: ImmutableList<JavaFileObject> generated

Java8的一个特性是能够向接口添加静态方法。我正在开发基于注释处理器的java库,名为

我在用谷歌。当我尝试测试以下接口的编译时:

public interface AppDataSource {

    static void execute(DaoPerson daoPerson) {
        daoPerson.insert(new Person());
    }
}
使用如下代码:

ImmutableList<JavaFileObject> generated = com.google.testing.compile.Compiler.javac()
                    .compile(sourcesPhase1).generatedSourceFiles();
有关完整代码,请访问:


我怎么了?

请检查您的编译器,它可能使用的是低于java8的版本

静态方法是在java8中引入的,如果编译器使用java8,则编译时不会出现错误

如果您安装了java8版本,并且如果您的编译器使用以下版本而不是java8,那么您将得到如下编译错误

源代码1.7中不支持静态接口方法 静态void execute(){ ^ (使用-source 8或更高版本来启用静态接口方法)


仅在源代码级别1.8或更高版本的接口中允许使用静态方法


请检查编译器使用的版本并更正。

谢谢。检查后,我发现project中有一个对旧tool.jar的引用。将tool.jar更新为版本8,一切正常。
sqlite/feature/transition/AppDataSource.java:29: error: modifier static not allowed here
    static void execute(DaoPerson daoPerson) {