Files
bookstore/setup-java21.sh
2025-10-13 15:46:59 +08:00

104 lines
2.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Java 环境配置脚本
echo "🔧 配置Java 21运行环境..."
# 1. 检查当前Java版本
echo "当前Java版本:"
java -version
# 2. 检查可用的Java版本
echo -e "\n可用的Java版本:"
if command -v /usr/libexec/java_home &> /dev/null; then
/usr/libexec/java_home -V
fi
# 3. 查找JDK 21
echo -e "\n查找JDK 21..."
JDK21_HOME=""
# 检查常见路径
COMMON_PATHS=(
"/usr/lib/jvm/java-21-openjdk"
"/usr/lib/jvm/java-21-oracle"
"/Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home"
"/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home"
"/opt/homebrew/opt/openjdk@21"
"$HOME/.sdkman/candidates/java/21.0.1-open"
"$HOME/.sdkman/candidates/java/21.0.2-open"
"$HOME/.sdkman/candidates/java/21.0.3-open"
)
for path in "${COMMON_PATHS[@]}"; do
if [ -d "$path" ]; then
echo "✅ 找到JDK 21: $path"
JDK21_HOME="$path"
break
fi
done
# 使用java_home工具查找(macOS)
if [ -z "$JDK21_HOME" ] && command -v /usr/libexec/java_home &> /dev/null; then
if JDK21_HOME=$(/usr/libexec/java_home -v 21 2>/dev/null); then
echo "✅ 通过java_home找到JDK 21: $JDK21_HOME"
fi
fi
if [ -z "$JDK21_HOME" ]; then
echo "❌ 未找到JDK 21,请安装JDK 21"
echo ""
echo "📥 安装方法:"
echo "1. 使用Homebrew (macOS):"
echo " brew install openjdk@21"
echo ""
echo "2. 使用SDKMAN:"
echo " sdk install java 21.0.3-open"
echo ""
echo "3. 从Oracle官网下载:"
echo " https://www.oracle.com/java/technologies/downloads/#java21"
echo ""
exit 1
fi
# 4. 设置环境变量
echo -e "\n🔧 设置环境变量..."
export JAVA_HOME="$JDK21_HOME"
export PATH="$JAVA_HOME/bin:$PATH"
# 5. 验证设置
echo -e "\n✅ 验证Java 21设置:"
echo "JAVA_HOME: $JAVA_HOME"
java -version
# 6. 生成环境配置文件
echo -e "\n📝 生成环境配置文件..."
# 创建.java-version文件(jenv用)
echo "21" > .java-version
# 创建shell配置脚本
cat > setjava21.sh << 'EOF'
#!/bin/bash
# Java 21 环境配置脚本
export JAVA_HOME="$JDK21_HOME"
export PATH="$JAVA_HOME/bin:$PATH"
echo "✅ Java 21 环境已配置"
echo "JAVA_HOME: $JAVA_HOME"
java -version
EOF
# 替换占位符
sed -i.bak "s|\$JDK21_HOME|$JDK21_HOME|g" setjava21.sh
rm setjava21.sh.bak
chmod +x setjava21.sh
echo "✅ 创建了 setjava21.sh 脚本"
echo ""
echo "🚀 使用方法:"
echo "1. 在当前shell中运行: source ./setjava21.sh"
echo "2. 或者在每次新的shell中运行: export JAVA_HOME='$JDK21_HOME' && export PATH=\"\$JAVA_HOME/bin:\$PATH\""
echo ""
echo "📝 永久配置(添加到 ~/.zshrc 或 ~/.bashrc):"
echo "export JAVA_HOME='$JDK21_HOME'"
echo "export PATH=\"\$JAVA_HOME/bin:\$PATH\""