当前位置: 首页 > news >正文

jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路

背景

在使用 Maven 构建 Java 项目时,有时需要通过 pom.xml 文件指定编译的 JDK 版本,但发现配置后并未生效。这种情况通常是由于以下几个原因导致的:

  1. pom.xml 配置不完整或错误
    pom.xml 中,通常需要配置 maven-compiler-plugin 插件来指定 JDK 版本。如果配置不完整或错误,可能会导致版本切换失败。以下是一个完整的配置示例:

    <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>11</source> <!-- 指定源代码的 JDK 版本 --><target>11</target> <!-- 指定编译后的字节码的 JDK 版本 --></configuration></plugin></plugins>
    </build>
    

    如果 sourcetarget 配置不一致,或者版本号写错(例如写成 1.11 而不是 11),都会导致配置失效。

  2. Maven 默认使用的 JDK 版本
    即使 pom.xml 中配置了 JDK 版本,Maven 仍然会使用系统默认的 JDK 进行编译。可以通过以下命令检查 Maven 使用的 JDK 版本:

    mvn -version
    

    如果输出显示的 JDK 版本与 pom.xml 中配置的版本不一致,可以通过以下方式解决:

    • 在系统环境变量中设置 JAVA_HOME,指向目标 JDK 的安装路径。
    • 在 Maven 的配置文件 settings.xml 中指定 JDK 版本。
  3. IDE 的 JDK 配置 参考步骤①~④
    如果使用 IntelliJ IDEA 或 Eclipse 等 IDE 进行开发,IDE 可能会覆盖 pom.xml 中的 JDK 配置。需要确保 IDE 中的项目设置与 pom.xml 一致:

    • 在 IntelliJ IDEA 中,打开 File -> Project Structure,检查 Project SDKProject language level
①:打开idea ->Settings -> Build,Execution, Deployment -> java Compiler 选择对应的jdk版本

在这里插入图片描述

②:Settings -> Project Strcture -> Project 选择对应的jdk

在这里插入图片描述

③:Settings -> Project Strcture -> Modules选择对应的jdk

在这里插入图片描述

④:maven -> modify run configuration -> java options选择对应的jdk

在这里插入图片描述

  1. Maven 缓存问题
    Maven 可能会缓存旧的配置或依赖,导致新配置未生效。可以尝试清理 Maven 缓存并重新构建项目:

    mvn clean install
    
  2. 多模块项目的配置问题
    如果项目是多模块的,确保在父模块的 pom.xml 中正确配置了 maven-compiler-plugin,或者在子模块中覆盖了父模块的配置。
    通过以上步骤逐一排查,通常可以解决 JDK 版本切换不生效的问题。

相关文章:

  • 使用lldb查看Rust不同类型的结构
  • cv_connection (像halcon一样对区域进行打散)
  • Markdown—LaTeX 数学公式
  • PCB设计实践(十二)PCB设计电容选型:功能、材质、规则
  • 数据结构与算法分析实验12 实现二叉查找树
  • 问题及解决01-面板无法随着窗口的放大而放大
  • 【论文阅读】Efficient and secure federated learning against backdoor attacks
  • Client 和 Server 的关系理解
  • 【AI智能推荐系统】第七篇:跨领域推荐系统的技术突破与应用场景
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月10日第73弹
  • 如何避免在CMD中分段发送问题导致大模型多段回复的问题?
  • 解密数据结构之位图和布隆过滤器
  • 【Redis进阶】持久化
  • 每日算法刷题Day1 5.9:leetcode数组3道题,用时1h
  • [6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)
  • (四)毛子整洁架构(Presentation层/Authentiacation)
  • 问题解决思路:numpy:DLL load failed
  • QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
  • AUTODL Chatglm2 langchain 部署大模型聊天助手
  • 《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-《打砖块:向量反射与实时物理模拟》MATLAB教程
  • 夜读丨喜马拉雅山的背夫
  • 公安部部署“昆仑2025”专项工作,严打环食药等领域突出犯罪
  • 毕赣新作《狂野时代》入围戛纳主竞赛单元,易烊千玺舒淇主演
  • 国家税务总局泰安市税务局:山东泰山啤酒公司欠税超536万元
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 陕西澄城樱桃在上海推介,向长三角消费者发出“甜蜜之邀”