编译测试库不编译接口的静态方法(Java 8)
compile testing library does not compile static method of interface (Java 8)
Java8 的一个特点是能够向接口添加静态方法。我正在开发基于注释处理器的 java 库,名为 Kripton Persistence Library.
我正在使用 google compile testing library。当我尝试测试以下接口的编译时:
public interface AppDataSource {
static void execute(DaoPerson daoPerson) {
daoPerson.insert(new Person());
}
}
使用如下代码:
ImmutableList<JavaFileObject> generated = com.google.testing.compile.Compiler.javac()
.compile(sourcesPhase1).generatedSourceFiles();
我得到以下错误:
sqlite/feature/transition/AppDataSource.java:29: error: modifier static not allowed here
static void execute(DaoPerson daoPerson) {
完整代码可在以下位置获得:
我哪里错了?
请检查您的编译器,它可能使用以下版本 java8。
在java8中引入了静态方法,如果您的编译器使用java8那么您在编译时不会出错。
如果您安装了 java8 版本并且您的编译器使用以下版本而不是 java8 那么您将得到如下编译错误。
-source 1.7 不支持静态接口方法
静态无效执行(){
^
(使用 -source 8 或更高版本启用静态接口方法)
或
仅在源级别 1.8 或更高版本的接口中才允许使用静态方法
请检查您的编译器使用的版本并更正它。
Java8 的一个特点是能够向接口添加静态方法。我正在开发基于注释处理器的 java 库,名为 Kripton Persistence Library.
我正在使用 google compile testing library。当我尝试测试以下接口的编译时:
public interface AppDataSource {
static void execute(DaoPerson daoPerson) {
daoPerson.insert(new Person());
}
}
使用如下代码:
ImmutableList<JavaFileObject> generated = com.google.testing.compile.Compiler.javac()
.compile(sourcesPhase1).generatedSourceFiles();
我得到以下错误:
sqlite/feature/transition/AppDataSource.java:29: error: modifier static not allowed here
static void execute(DaoPerson daoPerson) {
完整代码可在以下位置获得:
我哪里错了?
请检查您的编译器,它可能使用以下版本 java8。
在java8中引入了静态方法,如果您的编译器使用java8那么您在编译时不会出错。
如果您安装了 java8 版本并且您的编译器使用以下版本而不是 java8 那么您将得到如下编译错误。
-source 1.7 不支持静态接口方法 静态无效执行(){ ^ (使用 -source 8 或更高版本启用静态接口方法)
或
仅在源级别 1.8 或更高版本的接口中才允许使用静态方法
请检查您的编译器使用的版本并更正它。