1.异常现象
Maven install 的时候,出现异常:不是抽象的, 并且未覆盖java.util.function.Predicate中的抽象方法test(java.util.Map<java.lang.String,java.lang.Object>)
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project im-service: Compilation failure: Compilation failure:
...
[296,147] <匿名com.wei.ping.service.report.manage.impl.XxxxImpl$1>不是抽象的, 并且未覆盖java.util.function.Predicate中的抽象方法test(java.util.Map<java.lang.String,java.lang.Object>)
2.排查分析
2.1. JDK版本有问题
确认项目 JDK 版本与所需 JDK 版本是否一致导致。比如项目的 pom.xml 中定义了 Java 版本为 1.8,但是实际 IDEA 中 maven run 的却是 JDK 1.7。
2.2. maven-compiler-plugin 插件配置有问题
确认 pom.xml 中是否有 maven-compiler-plugin 配置。并确认 plugins.plugin.configuration 的 source 标签配置(源代码使用的开发版本)和 target 标签配置(需要生成的目标class文件的编译版本)是否与项目 JDK 版本一致。
2.3. maven 安装目录下的 \maven\conf\settings.xml 文件的 maven.compiler.source 的设置版本有问题
确认 settings.xml 配置的 maven.compiler.source 版本是否与项目使用的版本一致或者兼容。
3.解决方案
3.1. 更换当前 JDK 版本为项目所需 JDK 版本即可。
3.2. pom 文件增加以下 maven-compiler-plugin 依赖,其配置项 source 与 target 需要和项目 JDK 版本一致:
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
或者
<properties>
<java_source_version>1.8</java_source_version>
<java_target_version>1.8</java_target_version>
<maven_compiler_plugin_version>2.3.2</maven_compiler_plugin_version>
</properties>
...
<build>
<plugins>
<plugin>
<!-- 编译源代码 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven_compiler_plugin_version}</version>
<configuration>
<!-- 源代码使用的开发版本 -->
<source>${java_source_version}</source>
<!-- 需要生成的目标class文件的编译版本 -->
<target>${java_target_version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
3.3. 或者检查一下 maven 安装目录下的 \maven\conf\settings.xml 文件,看看 maven.compiler.source 设置的是哪个版本,是否与自己使用的版本一致或者兼容。