汉化版IDEA 更换 JDK 版本全教程,超详细!

汉化版IDEA 更换 JDK 版本全教程,超详细!

在 Java 开发中,我们经常需要根据项目需求切换不同的 JDK 版本(比如从 JDK8 升级到 JDK17,或降级到 JDK11)。对于使用汉化版 IntelliJ IDEA的小伙伴,本文全程采用中文菜单 / 选项描述,不改动任何非必要配置,手把手教你完成 JDK 切换,全程避坑!

一、场景 1:设置全局默认 JDK(所有新项目生效)

    • 若未打开任何项目:直接点击 IDEA 启动界面的「文件 → 新项目设置 → 新项目的结构」(2020 + 版本);
    • 若已打开项目:点击「文件 → 项目结构」。
    1. 在弹出的「项目结构」窗口左侧,选择「平台设置 → SDK」;
    2. 点击右上角「+」号,选择「从磁盘添加JDK...」;
    3. 在文件选择窗口中,找到你安装的目标 JDK 根目录(比如C:\jdk\jdk21),点击「确定」;
    4. 此时 IDEA 会自动识别 JDK 版本,确认后点击「应用」。
    5. 注意!,只有右侧「类路径」识别到多个清晰识别到多个核心包 / 依赖包,才算添加成功
    1. 在「项目结构」左侧选择「项目设置 → 项目」;
    2. 在右侧「SDK」选择刚刚添加的 JDK 版本;
    3. 在「语言级别」中选择对应版本(建议与 JDK 版本一致,比如 JDK17 选 17);
    4. 点击「确定」保存配置,全局默认 JDK 设置完成。
    1. 左侧选择「模块」,选中你的项目模块;
    2. 切换到「依赖」标签页;
    3. 在「模块 SDK」下拉框中选择目标 JDK 版本;
    1. 在 IDEA 左侧项目面板中,找到根目录下的 pom.xml 文件并双击打开;
    2. 插入 / 修改以下配置,将版本号改为目标 JDK 版本(示例为 JDK17):
    1. 点击「文件 → 项目结构 → 项目」,查看「项目 SDK」是否为目标版本;
    2. 打开项目中的任意 Java 类,点击顶部「文件 → 项目结构 → 模块」,确认模块 SDK 一致。
    • 原因:选择的路径不是 JDK 根目录(比如选到了jdk-17.0.9\bin);
    • 解决方案:重新选择 JDK 的根目录(包含binlibjre等文件夹的目录)。
    • 原因:项目 SDK、模块 SDK、语言级别三者版本不一致;
    • 解决方案:统一三者为目标 JDK 版本(比如全部改为 17)。
    1. 汉化版 IDEA 更换 JDK 核心是「添加 SDK → 配置项目 SDK → 配置模块 SDK」三步,三者缺一不可;
    2. 全局设置适合所有新项目,单个项目设置仅影响当前项目,全程无需改动其他配置;

点击「应用 → 确定」。

该方式会修改 IDEA 的配置,后续新建的项目都会默认使用这个 JDK 版本。

步骤 1:打开 IDEA 全局设置

步骤 2:配置 SDK

步骤 3:设置默认项目 SDK

 

步骤 4:修改模块 SDK(关键!避免编译报错)

步骤5:不同项目类型的额外配置

更换 JDK 后是否需要修改配置文件,核心取决于你的项目类型,不同类型处理方式完全不同:场景 1:普通 Java 项目无需修改任何配置文件—— 仅需完成上述 IDEA 的 SDK 配置即可,JDK 版本会直接生效,编译、运行均以 IDEA 配置的版本为准。场景 2:Maven 项目(有 pom.xml 文件)这种情况必须同步修改 pom.xml(仅改 IDEA 会导致版本不一致报错):xml 修改中间数字与目标JDK版本一致 版本为JDK21就改为21  <maven.compiler.source>21</maven.compiler.source>  <maven.compiler.target>21</maven.compiler.target> 3.修改完成后,点击 IDEA 右侧「Maven」面板的「刷新」按钮(或右键项目 → Maven → 重新加载项目),让配置生效。

二、验证 JDK 是否更换成功

方法 1:通过 IDEA 界面验证

方法 2:通过代码验证(最直观)

在项目中新建测试类,运行以下代码,输出的版本号即为当前使用的 JDK 版本: public class JdkVersionTest {     public static void main(String[] args) {         // 获取JDK版本         String javaVersion = System.getProperty("java.version");         // 获取JDK安装路径         String javaHome = System.getProperty("java.home");                   System.out.println("当前JDK版本:" + javaVersion);         System.out.println("当前JDK路径:" + javaHome);     }  }示例输出(JDK17): 当前JDK版本:17.0.9  当前JDK路径:D:\Java\jdk-17.0.9\jre

三、常见问题与解决方案

问题 1:添加 JDK 时提示「所选目录不是有效的 JDK 主目录」

问题 2:项目编译报错「java: 不支持发行版本 XX」

四、总结

 

 

Read more

Java外功精要(6)——Spring事务及其传播机制

Java外功精要(6)——Spring事务及其传播机制

1.概述 Spring事务管理是Spring框架中用于确保数据库操作 原子性、一致性、隔离性和持久性(ACID) 的核心机制。它通过声明式或编程式(本文略)方式管理事务,支持多种事务传播行为和隔离级别相较于编程式事务,声明式事务通过@Transactional注解实现事务管理,无需手动编写事务代码事务基本概念在全面解析MySQL(5)——“索引、事务、JDBC”三大核心一文中有介绍,本文不再赘述 2.@Transactional 作用:提供声明式事务管理。它简化了在应用程序中管理数据库事务的流程。开发者只需在方法或类上添加此注解,Spring框架就会自动处理事务的开启、提交和回滚,无需手动编写事务管理代码(如 begin、commit、rollback) 级别:类 + 方法作为类注解:为类中所有public方法添加注解作为方法注解:默认仅对public方法生效 @RequestMapping("/test")@RestController@Slf4jpublicclassTestController{privatefinalUserService userService;@A

By Ne0inhk
【Linux/C++多进程篇(一) 】一个变两个?揭秘 C/C++ 程序中神奇的“分身术”

【Linux/C++多进程篇(一) 】一个变两个?揭秘 C/C++ 程序中神奇的“分身术”

⭐️在这个怀疑的年代,我们依然需要信仰。 个人主页:YYYing. ⭐️Linux/C++进阶系列专栏:【从零开始的linux/c++进阶编程】 ⭐️其他专栏:【linux基础】【数据结构与算法】【从零开始的计算机网络学习】 系列上期内容:【Linux/C++文件篇(一) 】标准I/O与文件I/O基础  系列下期内容:【Linux/C++多进程篇(二) 】万字解析linux系统编程之进程间通信 (IPC) 目录 前言:        多进程理论基础 一、为什么要引入多进程 二、多进程相关概念 三、进程的内存管理 四、进程与程序的区别 五、进程的种类 六、进程PID 七、特殊的进程 八、linux中有关进程的指令 九、进程状态的切换

By Ne0inhk

为什么 Java 一行代码,JVM 要执行 4 条指令?(99% Java 开发没真正看过)

为什么 Java 一行代码,JVM 要执行 4 条指令?(99% Java 开发没真正看过) * JVM 字节码实战:深入解析 System.out.println 的执行原理 * 一、前言:为什么需要了解字节码? * 二、JVM 运行时数据区全景 * 2.1 关键区域说明 * 2.2 栈帧结构详解(重点) * 三、Java 程序的执行链路 * 3.1 完整执行流程 * 3.2 关键认知 * 四、实战:使用 javap 分析 class 文件 * 4.1 环境准备 * 4.

By Ne0inhk
Java外功精要(2)——Spring IoC&DI

Java外功精要(2)——Spring IoC&DI

1.IoC(控制反转) 1.1 Spring Ioc VS Servlet 在上文:Java外功基础(1)——Spring Web MVC中,很形象地模拟出使用Spring"建造房子"的大概流程。使用Spring建造房子不需要像Servlet那样烧制每一块砖,只需要从Spring中取出一个个提前预制好的组件然后组装即可。换言之:Spring是包含了大量工具的IoC容器 1.2 IoC解析 1.2.1 IoC概述 概念:IoC(Inversion of Control,控制反转),是一种设计原则,用于减少代码间的直接依赖关系。传统编程中,调用者通常主动创建和管理被调用者的生命周期,而 IoC 将这种控制权交给外部容器或框架,由容器负责对象的创建、依赖注入和管理 示例一:传统编程模式 classCar{protectedFramework

By Ne0inhk