Java异常 #匿名xxx不是抽象的, 并且未覆盖java.util.function.Predicate中的抽象方法test

博客围绕Maven install时出现未覆盖抽象方法test的异常展开。先介绍异常现象,接着从JDK版本、maven-compiler-plugin插件配置、settings.xml文件设置三方面排查分析,最后给出更换JDK版本、调整pom文件依赖配置、检查settings.xml文件等解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 设置的是哪个版本,是否与自己使用的版本一致或者兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值