JDK 安装配置

JDK 安装配置详细指南(推荐 JDK 17+)

📦 JDK 版本选择建议

JDK 版本 状态 推荐用途
JDK 17 LTS(长期支持) 企业生产环境首选
JDK 21 LTS(最新) 新技术尝鲜,学习新特性
JDK 11 LTS 老系统维护(逐渐迁移到17)
JDK 8 维护中 传统企业应用(尽快升级)

建议初学者选择 JDK 17:平衡了新特性和稳定性


🖥️ Windows 系统安装

方法一:手动安装(推荐)

1. 下载 JDK

推荐使用 Adoptium Eclipse Temurin JDK 17

2. 安装步骤
bash 复制代码
# 1. 下载 Windows x64 Installer (.msi)
# 2. 双击运行,按向导安装
# 3. 建议安装路径(避免空格和中文):
#    C:\dev\java\jdk-17
# 4. 安装过程中会自动设置JAVA_HOME环境变量
3. 手动配置环境变量(如果.msi安装没自动配置)
bash 复制代码
# 1. 右键"此电脑" → "属性" → "高级系统设置"
# 2. "环境变量" → 系统变量 → 新建

# 新建 JAVA_HOME(如果不存在)
变量名:JAVA_HOME
变量值:C:\dev\java\jdk-17

# 3. 编辑 Path 变量
# 添加:%JAVA_HOME%\bin
# (最好放在最前面)

方法二:使用包管理器(推荐开发者)

powershell 复制代码
# 1. 安装 Chocolatey(Windows 包管理器)
# 以管理员打开 PowerShell,运行:
Set-ExecutionPolicy Bypass -Scope Process -Force; 
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; 
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 2. 使用 Chocolatey 安装 JDK
choco install temurin17 -y
# 或安装多个版本
choco install temurin11 temurin17 temurin21 -y

方法三:使用 Scoop

powershell 复制代码
# 1. 安装 Scoop
irm get.scoop.sh | iex

# 2. 安装 JDK
scoop bucket add java
scoop install temurin17-jdk

🍎 macOS 系统安装

方法一:使用 Homebrew(推荐)

bash 复制代码
# 1. 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 2. 安装 JDK 17
brew install openjdk@17

# 3. 配置环境变量
# 对于 Intel Mac,添加到 ~/.zshrc 或 ~/.bash_profile
echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
echo 'export JAVA_HOME="/usr/local/opt/openjdk@17"' >> ~/.zshrc

# 对于 Apple Silicon (M1/M2) Mac
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
echo 'export JAVA_HOME="/opt/homebrew/opt/openjdk@17"' >> ~/.zshrc

# 4. 使配置生效
source ~/.zshrc

方法二:手动下载安装

bash 复制代码
# 1. 下载 macOS .pkg 安装包
# 2. 双击安装
# 3. JDK 通常安装在:
#    Intel Mac: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
#    M1/M2 Mac: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

方法三:使用 jEnv 管理多版本(高级)

bash 复制代码
# 1. 安装 jEnv
brew install jenv

# 2. 配置 shell
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc

# 3. 添加 JDK
jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

# 4. 设置全局版本
jenv global 17
# 或在特定目录设置本地版本
jenv local 17

🐧 Linux 系统安装

Ubuntu/Debian 系统

bash 复制代码
# 方法一:使用 apt(OpenJDK)
# 1. 更新包列表
sudo apt update

# 2. 安装 JDK 17
sudo apt install openjdk-17-jdk -y

# 3. 验证安装
java -version

# 4. 设置默认版本(如果安装了多个)
sudo update-alternatives --config java

CentOS/RHEL/Fedora

bash 复制代码
# 方法一:使用 yum/dnf
# 1. CentOS/RHEL 7/8
sudo yum install java-17-openjdk-devel

# 2. Fedora / CentOS Stream / RHEL 9
sudo dnf install java-17-openjdk-devel

# 方法二:手动安装(任何 Linux 发行版)
# 1. 下载 .tar.gz 压缩包
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz

# 2. 解压到 /opt
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz -C /opt

# 3. 设置环境变量
echo 'export JAVA_HOME="/opt/jdk-17.0.9+9"' >> ~/.bashrc
echo 'export PATH="$JAVA_HOME/bin:$PATH"' >> ~/.bashrc

# 4. 使配置生效
source ~/.bashrc

使用 SDKMAN(推荐 Linux/macOS)

bash 复制代码
# 1. 安装 SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

# 2. 列出可用 JDK 版本
sdk list java

# 3. 安装 JDK 17
sdk install java 17.0.9-tem

# 4. 切换版本
sdk use java 17.0.9-tem
# 或设置为默认
sdk default java 17.0.9-tem

🔧 验证安装

基本验证命令

bash 复制代码
# 1. 检查 Java 版本
java -version
# 输出示例:
# openjdk version "17.0.9" 2023-10-17
# OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9)
# OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode, sharing)

# 2. 检查 Java 编译器
javac -version
# javac 17.0.9

# 3. 检查安装路径
echo $JAVA_HOME  # Linux/macOS
echo %JAVA_HOME% # Windows cmd
$env:JAVA_HOME   # Windows PowerShell

创建测试程序验证

java 复制代码
// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("JDK 安装成功!");
        System.out.println("Java 版本: " + System.getProperty("java.version"));
        System.out.println("JAVA_HOME: " + System.getProperty("java.home"));
    }
}

编译和运行:

bash 复制代码
# 1. 编译
javac HelloWorld.java

# 2. 运行
java HelloWorld

# 输出:
# JDK 安装成功!
# Java 版本: 17.0.9
# JAVA_HOME: C:\dev\java\jdk-17

⚙️ 配置优化

1. 设置 Maven 使用指定 JDK

xml 复制代码
<!-- settings.xml 中添加 -->
<profile>
  <id>jdk-17</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>17</jdk>
  </activation>
  <properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  </properties>
</profile>

2. 配置 IDE 使用 JDK 17

IntelliJ IDEA
bash 复制代码
# File → Project Structure → SDKs
# 点击 "+" → Add JDK
# 选择 JDK 17 安装目录
# 设置项目语言级别为 17
Eclipse
bash 复制代码
# Window → Preferences → Java → Installed JREs
# 点击 Add → Standard VM
# 选择 JDK 17 安装目录
VS Code
json 复制代码
// settings.json
{
  "java.configuration.runtimes": [
    {
      "name": "JavaSE-17",
      "path": "C:\\dev\\java\\jdk-17",
      "default": true
    }
  ],
  "java.jdt.ls.java.home": "C:\\dev\\java\\jdk-17"
}

3. 常用环境变量配置

bash 复制代码
# Windows (PowerShell)
$env:JAVA_TOOL_OPTIONS = "-Dfile.encoding=UTF-8"
$env:MAVEN_OPTS = "-Xmx1024m -XX:MaxPermSize=256m"

# Linux/macOS
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=256m"

🔄 多版本 JDK 管理

Windows:使用 PowerShell 脚本切换

powershell 复制代码
# switch-jdk.ps1
param([string]$version)

$javaHome = switch ($version) {
    "8" { "C:\dev\java\jdk-8" }
    "11" { "C:\dev\java\jdk-11" }
    "17" { "C:\dev\java\jdk-17" }
    "21" { "C:\dev\java\jdk-21" }
    default { "C:\dev\java\jdk-17" }
}

# 设置用户环境变量
[Environment]::SetEnvironmentVariable("JAVA_HOME", $javaHome, "User")
[Environment]::SetEnvironmentVariable("Path", 
    "$javaHome\bin;" + 
    [Environment]::GetEnvironmentVariable("Path", "User") -replace 
    "C:\\dev\\java\\jdk-\d+\\bin;?", ""),
    "User")

Write-Host "已切换到 JDK $version"

macOS/Linux:使用 update-alternatives

bash 复制代码
# 1. 注册多个 JDK
sudo update-alternatives --install /usr/bin/java java /opt/jdk-17.0.9+9/bin/java 1
sudo update-alternatives --install /usr/bin/java java /opt/jdk-11.0.20+8/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-17.0.9+9/bin/javac 1
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-11.0.20+8/bin/javac 2

# 2. 切换版本
sudo update-alternatives --config java
sudo update-alternatives --config javac

🐛 常见问题解决

1. "java"不是内部或外部命令

bash 复制代码
# 原因:Path 环境变量配置错误
# 解决:
# 1. 检查 JAVA_HOME 是否正确设置
# 2. 确保 Path 中有 %JAVA_HOME%\bin(Windows)
# 3. 重启命令行或终端
# 4. 或使用绝对路径:C:\dev\java\jdk-17\bin\java -version

2. 版本混乱问题

bash 复制代码
# 查看所有 java 可执行文件位置
# Windows:
where java

# Linux/macOS:
which -a java

# 删除不需要的版本或调整 Path 顺序

3. 权限问题(Linux/macOS)

bash 复制代码
# 确保 .tar.gz 解压后文件有执行权限
sudo chmod -R 755 /opt/jdk-17.0.9+9

# 确保当前用户有访问权限
sudo chown -R $USER:$USER /opt/jdk-17.0.9+9

4. IDE 找不到 JDK

bash 复制代码
# 1. 检查 IDE 配置的 JDK 路径
# 2. 确保路径没有空格和中文
# 3. 重新导入或重新配置 JDK

📊 JDK 17 新特性快速了解

java 复制代码
// 1. 文本块(Java 13 引入,Java 15 正式)
String json = """
    {
        "name": "张三",
        "age": 25,
        "city": "北京"
    }
    """;

// 2. Switch 表达式增强
String dayType = switch (day) {
    case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "工作日";
    case SATURDAY, SUNDAY -> "周末";
};

// 3. 记录类(Record Classes)
record Point(int x, int y) { }

// 4. 密封类(Sealed Classes)
sealed interface Shape permits Circle, Rectangle, Triangle { }

// 5. 模式匹配 instanceof
if (obj instanceof String s && s.length() > 5) {
    System.out.println(s.toUpperCase());
}

🎯 最终检查清单

✅ 下载并安装 JDK 17

✅ 验证 java -version 输出正确

✅ 验证 javac -version 输出正确

✅ 配置 JAVA_HOME 环境变量

✅ 将 %JAVA_HOME%\bin 或 $JAVA_HOME/bin 添加到 Path

✅ IDE 正确识别 JDK 17

✅ 能成功编译和运行 HelloWorld 程序

安装完成后,就可以开始你的 Java 学习之旅了!🎉

相关推荐
星哥说事3 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言
派大鑫wink3 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
xUxIAOrUIII4 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home4 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
等....4 小时前
Miniconda使用
开发语言·python
zfj3214 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
醇氧4 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
Java&Develop4 小时前
Aes加密 GCM java
java·开发语言·python
weixin_462446234 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang