# Java

📜 脚本名称：`setup-multi-java.sh`

```bash
#!/bin/bash

set -e

echo "🧩 正在更新系统软件源..."
sudo apt update

echo "📦 安装 OpenJDK 8, 11, 17, 21..."
sudo apt install -y openjdk-8-jdk openjdk-11-jdk openjdk-17-jdk openjdk-21-jdk

echo "🔗 注册所有 JDK 到 update-alternatives..."

# 定义每个版本路径
declare -A jdks=(
    [8]="/usr/lib/jvm/java-8-openjdk-amd64"
    [11]="/usr/lib/jvm/java-11-openjdk-amd64"
    [17]="/usr/lib/jvm/java-17-openjdk-amd64"
    [21]="/usr/lib/jvm/java-21-openjdk-amd64"
)

# 注册 java 和 javac
for version in "${!jdks[@]}"; do
    path="${jdks[$version]}"
    if [ -d "$path" ]; then
        sudo update-alternatives --install /usr/bin/java java "$path/bin/java" "$((1000 + version))"
        sudo update-alternatives --install /usr/bin/javac javac "$path/bin/javac" "$((1000 + version))"
        echo "✅ 已注册 JDK $version"
    else
        echo "⚠️  路径不存在：$path，跳过"
    fi
done

echo "📌 当前默认 Java 版本："
java -version

echo "✅ 你可以使用以下命令切换默认版本："
echo "📁 sudo update-alternatives --config java"
echo "📁 建议运行例如 './use-java11.sh' 来切换 JAVA_HOME 并激活"

```

### 📁 脚本使用方法

#### 1. 保存脚本

保存为 `setup-multi-java.sh` 文件。

#### 2. 赋予可执行权限

```bash
chmod +x setup-multi-java.sh
```

#### 3. 运行安装

```bash
./setup-multi-java.sh
```

***

### ⚙️ 可选：版本快速切换脚本（推荐）

为方便快速切换，可创建快捷脚本，如：

#### 📄 `use-java8.sh`

```bash
#!/bin/bash
JDK_PATH="/usr/lib/jvm/java-8-openjdk-amd64"

sudo update-alternatives --set java $JDK_PATH/bin/java
sudo update-alternatives --set javac $JDK_PATH/bin/javac

echo "✅ Java 已切换到：$JDK_PATH"

# 设置 JAVA_HOME（只对当前 shell 有效）
export JAVA_HOME=$JDK_PATH
export PATH=$JAVA_HOME/bin:$PATH
echo "✅ JAVA_HOME 已设置为：$JAVA_HOME"

# 打印版本
java -version
```

#### 📄 `use-java11.sh`

```bash
#!/bin/bash
JDK_PATH="/usr/lib/jvm/java-11-openjdk-amd64"

sudo update-alternatives --set java $JDK_PATH/bin/java
sudo update-alternatives --set javac $JDK_PATH/bin/javac

echo "✅ Java 已切换到：$JDK_PATH"

# 设置 JAVA_HOME（只对当前 shell 有效）
export JAVA_HOME=$JDK_PATH
export PATH=$JAVA_HOME/bin:$PATH
echo "✅ JAVA_HOME 已设置为：$JAVA_HOME"

# 打印版本
java -version
```

依此类推创建 `use-java17.sh`、`use-java21.sh`。

赋予执行权限：

```bash
chmod +x use-java*.sh
```

***

### 🧪 验证

```bash
java -version
javac -version
```

***

需要我将这些脚本打包成 `.zip` 发给你，或帮你生成一键安装脚本压缩包也可以告诉我。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://close.gitbook.io/yun-wei-bi-ji/java.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
