104 lines
2.7 KiB
Bash
Executable File
104 lines
2.7 KiB
Bash
Executable File
#!/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\"" |