编译测试库不编译接口的静态方法(Java 8)
Java8的一个特性是能够向接口添加静态方法。我正在开发基于注释处理器的java库,名为 我在用谷歌。当我尝试测试以下接口的编译时:编译测试库不编译接口的静态方法(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
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) {