汉化版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

Flutter for OpenHarmony: Flutter 三方库 husky 守卫鸿蒙项目的 Git 提交规范(前端工程化必备)

Flutter for OpenHarmony: Flutter 三方库 husky 守卫鸿蒙项目的 Git 提交规范(前端工程化必备)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在 OpenHarmony 项目的团队协作中,我们最怕遇到“带病提交”的代码。比如:某位开发者提交的代码没经过 dart format 美化、或是包含明显的 lint 警告,甚至导致整个鸿蒙工程编译失败。如果在 CI(持续集成)阶段才发现,修复成本就太高了。 husky 是从前端生态圈引进的 Git Hooks 管理神器。它能让你极简地配置 Git 的各个钩子(如 pre-commit),在代码真正提交到远端(AtomGit)之前,强制执行格式化或单元测试,确保入库的代码永远是高质量的。 一、Git Hook 工作流模型 husky 在本地提交阶段建立了一道自动化的“安检门”。 通过 失败

【Linux】网络编程基础—套接字

【Linux】网络编程基础—套接字

一、套接字基本概念 套接字(Socket)是计算机网络中用于进程间通信的一种机制,通常用于不同主机之间的数据传输。它抽象了底层网络协议的细节,为应用程序提供统一的接口。套接字是IP地址与端口号的组合,用于唯一标识网络中的一个通信端点。 二、套接字工作原理 套接字通过绑定特定的IP地址和端口号,实现数据的发送和接收。通信双方各自创建一个套接字,并通过网络协议(如TCP或UDP)建立连接。数据通过套接字进行传输,发送方将数据写入套接字,接收方从套接字读取数据。 三、协议认识-UDP/TCP UDP和TCP特点 特性TCP(传输控制协议)UDP(用户数据报协议)连接性面向连接(三次握手建立连接,四次挥手断开)无连接(无需握手,直接发数据)可靠性可靠传输(保证数据不丢、不重、有序到达)不可靠传输(不保证送达,可能丢包 / 乱序)有序性保证数据按发送顺序到达(有序列号机制)不保证有序(先发的可能后到)重传机制丢包会重传(超时重传、快速重传)

鸿蒙电商购物全栈项目——数据安全与合规

鸿蒙电商购物全栈项目——数据安全与合规

《鸿蒙APP开发从入门到精通》第39篇:鸿蒙电商购物全栈项目——数据安全与合规 🛡️📝📊 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第39篇——数据安全与合规篇,100%承接第38篇的数据分析与商业洞察场景,并基于电商购物场景的数据安全与合规要求,设计并实现鸿蒙电商购物全栈项目的数据安全与合规功能。 学习目标: * 掌握鸿蒙应用数据安全的核心设计与实现; * 实现数据加密、数据脱敏、数据备份; * 理解数据合规的战略设计与实现; * 实现GDPR合规、用户数据权益保护、数据审计; * 掌握数据安全与合规的协同管理策略; * 优化电商购物项目的数据安全与合规水平。 学习重点: * 鸿蒙应用数据安全的全流程设计原则; * 数据合规的战略规划与技术落地; * 数据安全与合规的协同管理策略。 一、 数据安全基础 🛡️ 1.1 数据安全定义 数据安全是指保护电商购物项目中的数据安全,主要包括以下方面: * 数据加密:加密数据; * 数据脱敏:脱敏数据; * 数据备份:备份数据。 1.2 数据安全架构 数据安全采用分层架构,

HarmonyOS6 半年磨一剑 - RcInput 组件核心架构与类型系统设计

HarmonyOS6 半年磨一剑 - RcInput 组件核心架构与类型系统设计

文章目录 * 前言 * 部分案例演示 * 一、组件整体架构概览 * 1.1 文件组织结构 * 1.2 组件声明与依赖注入 * 1.3 参数装饰器设计 * 二、类型系统深度解析 * 2.1 输入类型枚举:RcInputType * 2.2 尺寸系统:RcInputSize * 2.3 对齐方式:RcInputAlign * 2.4 清空触发时机:RcInputClearTrigger * 2.5 格式化函数类型 * 三、双向绑定的实现原理 * 3.1 内外值分离设计 * 3.2 onValueChange 回调模式 * 四、组件生命周期与状态同步 * 4.1 aboutToAppear 初始化