You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Maven从Java 9迁移至Java 10时maven-compiler-plugin报错求助

解决Maven从Java9迁移到Java10时maven-compiler-plugin报错的问题

我之前升级Java版本时也碰到过一模一样的问题,老版本的maven编译插件对新Java版本的支持确实跟不上,咱们一步步来搞定它:

  • 先升级maven-compiler-plugin的版本
    你用的3.7.0版本是在Java10发布前的版本,对Java10的编译特性支持不完善。建议直接升级到3.8.1版本(这个版本是当时适配Java10比较稳定的选择),或者更高的兼容版本。

    修改后的pom.xml插件配置参考:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <source>10</source>
            <target>10</target>
            <release>10</release>
            <!-- 只有当你的环境里默认javac不是Java10时,才需要指定executable,否则可以删掉这一行 -->
            <executable>javac10</executable>
        </configuration>
    </plugin>
    
  • 简化配置(推荐操作)
    从Java9开始,release参数已经可以同时指定源码和目标字节码的版本,所以你可以把配置简化成只保留release,这样既简洁又不容易出现source/target版本不一致的问题:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <release>10</release>
            <executable>javac10</executable>
        </configuration>
    </plugin>
    
  • 检查环境兼容性

    • 确保你的Maven版本在3.5.4及以上,老版本Maven对Java10的兼容性也有问题,运行mvn -v就能查看版本
    • 执行javac -version确认当前环境的默认javac是否是Java10,如果是全局配置,那executable参数其实可以不用写,插件会自动识别
  • 清理缓存重新构建
    修改完配置后,先跑mvn clean清掉之前的编译缓存,再执行mvn compile或者mvn install,避免旧的编译文件影响新的构建过程。

如果做完这些还是有问题,可以检查下项目里其他插件(比如maven-surefire-plugin)是否也需要升级适配Java10,但大部分情况下,升级编译插件就能解决核心问题啦。

内容的提问来源于stack exchange,提问作者GOXR3PLUS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:28:44