Linux系统Java配置步骤解析
小樊
38
2025-12-20 06:31:07
Linux系统Java配置步骤解析
一 准备与安装JDK
- 选择版本与来源:常用为 OpenJDK 与 Oracle JDK。生产环境建议优先 LTS 版本(如 Java 11、Java 17)。
- 发行版包管理安装(推荐):
- Ubuntu/Debian:sudo apt update && sudo apt install openjdk-11-jdk
- CentOS/RHEL:sudo yum install java-11-openjdk-devel
- 手动安装(Oracle JDK 或特定版本):
- 从官网下载 .tar.gz,解压并移动到如 /usr/local/jdk-11.0.x
- 示例:tar -xvzf jdk-11.0.10_linux-x64_bin.tar.gz && sudo mv jdk-11.0.10 /usr/local/
- 安装后快速校验:java -version、javac -version 应返回对应版本信息。
二 配置环境变量
- 选择作用域:
- 当前用户:编辑 ~/.bashrc(或 ~/.bash_profile)
- 全体用户:编辑 /etc/profile(或发行版提供的环境文件)
- 写入变量(将路径替换为你的实际 JDK 安装目录):
- 示例:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64(常见于发行版安装)
- 或:export JAVA_HOME=/usr/local/jdk-11.0.10(手动安装)
- 更新 PATH:export PATH=$JAVA_HOME/bin:$PATH
- 使配置生效:source ~/.bashrc 或 source /etc/profile
- 可选(传统项目可能需要):export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 注意:某些发行版的 /etc/environment 为键值对格式,不支持 export,写入时应写成 JAVA_HOME=/usr/… 的形式。
三 验证与多版本管理
- 基础验证:
- echo $JAVA_HOME(应指向 JDK 根目录)
- echo $PATH(应包含 $JAVA_HOME/bin 且优先级正确)
- java -version、javac -version(版本号与期望一致)
- 多版本共存与切换:
- 使用 update-alternatives 管理 /usr/bin/java 的候选:
- 注册候选:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64 1
- 交互选择:sudo update-alternatives --config java
- 如需,也可为 javac 单独配置 alternatives。
四 常见问题与排查
- 命令未找到:检查 PATH 是否包含 $JAVA_HOME/bin,确认配置文件已 source;必要时用 which java 与 readlink -f $(which java) 追踪实际可执行文件。
- 版本冲突:使用 alternatives 设置默认版本,确保 PATH 中 $JAVA_HOME/bin 位于其他 Java 路径之前。
- 配置未生效:确认编辑的是当前使用的 shell 配置文件(如 ~/.bashrc),并执行 source;登录新会话再测。
- 路径错误:JAVA_HOME 必须指向 JDK 根目录(包含 bin、lib 等子目录),不要指向 jre 或 bin。
- 权限问题:解压、移动目录及写入 /etc/profile 等需要 sudo。
五 一键脚本示例
- 用途:在 Ubuntu/Debian 一键安装 OpenJDK 11 并配置 JAVA_HOME(当前用户)。
- 脚本:
- sudo apt update && sudo apt install -y openjdk-11-jdk
- echo ‘export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64’ >> ~/.bashrc
- echo ‘export PATH=$JAVA_HOME/bin:$PATH’ >> ~/.bashrc
- source ~/.bashrc
- java -version && javac -version
- 说明:如使用其他发行版或手动安装包,请相应调整 JAVA_HOME 路径与包管理命令。