最新版】Java JDK 安装与环境配置教程(附图文超详细,Windows+macOS 通用)

【2026最新版】Java JDK 安装与环境配置教程(Windows + macOS 超详细图文)

截至2026年1月,最新长期支持版(LTS)JDK 25(2025年9月发布),推荐大多数开发者使用。它提供长期安全更新和稳定性。下一个非LTS版本JDK 26预计2026年3月发布,目前处于早期访问阶段。

推荐下载来源:Eclipse Adoptium Temurin(免费、开源、TCK认证、高性能,支持多平台)。避免旧版Oracle商业许可限制。

下载地址:https://adoptium.net/temurin/releases/
选择 JDK 25(最新LTS),根据系统选包类型(Windows用MSI,macOS用PKG)。

1. Windows 系统安装与配置

步骤1:下载安装包
访问Adoptium网站,选择 Temurin 25 LTS → Windows x64 → .MSI 安装包,下载完成。

步骤2:运行安装
双击 .MSI 文件 → “Next” → 接受许可 → 选择安装路径(默认 C:\Program Files\Eclipse Adoptium\jdk-25.x.x) → 安装。

步骤3:配置环境变量

  1. 右键“此电脑” → 属性 → 高级系统设置 → 环境变量。
  2. 系统变量中新建 JAVA_HOME:值填JDK安装路径(如 C:\Program Files\Eclipse Adoptium\jdk-25.0.1+8)。
  3. 编辑 Path 变量,新建条目:%JAVA_HOME%\bin。

步骤4:验证安装
打开命令提示符(Win + R → cmd),输入:

java -version javac -version 

显示类似 jdk 25.0.1 信息即成功!

2. macOS 系统安装与配置(支持Intel & Apple Silicon M系列)

步骤1:下载安装包
Adoptium网站 → Temurin 25 LTS → macOS → 根据芯片选 aarch64(M系列)或 x64(Intel) → .PKG 包。

步骤2:运行安装
双击 .PKG 文件 → 继续 → 安装(可能需输入密码)。

步骤3:配置环境变量(推荐用zsh/bash)

  1. 打开终端(Terminal)。
  2. 编辑配置文件:
    • Intel/Mac默认zsh:nano ~/.zshrc
    • 老版bash:nano ~/.bash_profile
  3. 保存(Ctrl+O → Enter → Ctrl+X),然后运行 source ~/.zshrc 生效。

添加以下内容(路径根据实际调整,通常 /Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home):

export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH 

步骤4:验证安装
终端输入:

java -version javac -version 

显示版本信息即成功!

常见问题排查
  • java命令无效检查Path是否包含bin目录,重启终端/电脑。
  • 多个JDK冲突:用 /usr/libexec/java_home -V(macOS)查看,用JAVA_HOME指定默认。
  • 权限问题(macOS):安装时允许系统扩展。
  • 想用Oracle版:去 https://www.oracle.com/java/technologies/downloads/ 下载,但需接受许可。

安装完成!你现在可以愉快地写Java代码了~推荐用IntelliJ IDEA或VS Code作为IDE。如果遇到问题或想配置IDE,随时问我!🚀

Read more

【问题反馈】JNI 开发:为什么 C++ 在 Debug 正常,Release 却返回 NaN?

【问题反馈】JNI 开发:为什么 C++ 在 Debug 正常,Release 却返回 NaN?

摘要: 在 Android NDK / JNI 开发中,经常会遇到这样一种“诡异”问题:Debug 模式下运行完全正常,而 Release 模式却出现 NaN、Infinity 甚至随机结果。 本文通过一次真实的 JNI 坐标转换案例,深入分析了该问题的根本原因——C++ 返回局部栈内存指针所导致的未定义行为(Undefined Behavior)。 【问题反馈】JNI 开发:为什么 C++ 在 Debug 正常,Release 却返回 NaN? 本文为以下问题的解决记录。由于问题较为典型,故梳理备忘。 https://github.com/eqgis/Sceneform-EQR/discussions/16 一、问题现象描述 1. 现象

By Ne0inhk
C++ 多线程同步之互斥锁(mutex)实战

C++ 多线程同步之互斥锁(mutex)实战

C++ 多线程同步之互斥锁(mutex)实战 💡 学习目标:掌握 C++ 标准库中互斥锁的基本用法,理解多线程同步的核心原理,能够解决多线程环境下的资源竞争问题。 💡 学习重点:std::mutex 与 std::lock_guard 的使用、死锁的产生原因及规避方法、实际场景中的同步案例实现。 48.1 多线程同步的必要性 在多线程编程中,当多个线程同时访问共享资源时,会出现资源竞争问题。 例如两个线程同时对同一个变量进行读写操作,会导致最终结果与预期不符。 这种问题被称为线程安全问题,而解决该问题的核心就是线程同步。 ⚠️ 注意事项:线程不同步会引发数据竞争,造成程序运行结果不可预测,甚至导致程序崩溃。 举个简单的反例,两个线程同时对全局变量 count 进行自增操作: #include<iostream>#include<thread>usingnamespace std;int count

By Ne0inhk
【Java Web学习 | 第四篇】CSS(3) -背景

【Java Web学习 | 第四篇】CSS(3) -背景

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * CSS背景样式全解析🥝 * 4.1 背景颜色 (`background-color`) * 4.2 背景图片 (`background-image`) * 4.3 背景平铺 (`background-repeat`) * 4.4 背景图片位置 (`background-position`) * 4.5 背景图像固定 (`background-attachment`) * 4.6 背景属性复合写法 * 4.7 背景色半透明 (`rgba`) * 综合代码演示 * 学习资源推荐🐦‍🔥 CSS背景样式全解析🥝 在网页设计中,背景样式是塑造页面视觉效果的关键元素之一。通过CSS的背景属性,我们可以为页面添加丰富的视觉效果,包括背景颜色、背景图片、平铺方式、定位以及固定等。

By Ne0inhk
软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展:插件式开发方式 * 🤔 什么是插件式开发? * 🧩 为何选择插件式开发?—— 解耦与扩展的艺术 * 1. 高度解耦 * 2. 极致的扩展性 * 3. 增强可维护性 * 4. 支持动态加载与卸载 * 🏗️ 插件系统的核心架构 * 💻 实践篇:C# 下的插件式开发 * 1. 定义插件契约 * 2. 实现一个具体插件 * 3. 构建宿主程序(插件加载器) * 应用案例:可扩展的日志系统 * ⚙️ 实践篇:C++ 下的插件式开发 * 1. 定义插件契约 * 2. 实现一个具体插件 * 3. 构建宿主程序(插件加载器) * 📊 C# 与 C++ 实现对比 * ⚠️ 挑战与注意事项 * 🎯 总结:何时使用插件式架构? 🚀在软件工程的漫长演进中,我们始终在追求一个核心目标:构建稳定而灵活的系统。一个优秀的软件架构,如同人体的骨骼,既要坚实稳固,又要具备生长与适应的能力。

By Ne0inhk