不管你是刚装完Linux要跑Java应用,还是要搭开发环境,这两个方案选一个就行,覆盖主流发行版。
这个方案适合Ubuntu/Debian系,不用手动下包、配软链接,一步到位。
先更新仓库索引,避免装到旧版本。
sudo apt update
安装默认OpenJDK,当前Ubuntu 22.04/24.04默认是OpenJDK 17 LTS,够用了。
sudo apt install -y default-jdk
如果要指定版本,比如OpenJDK 11或者21,改后面的包名就行。
# 安装OpenJDK 11
sudo apt install -y openjdk-11-jdk
# 安装OpenJDK 21
sudo apt install -y openjdk-21-jdk
CentOS/RHEL系也能用yum/dnf装,命令差不多,包名是java-17-openjdk-devel这种,加上devel才会有javac编译器。
sudo dnf install -y java-17-openjdk-devel
适合需要指定具体小版本、或者要用Oracle JDK商业特性的情况。Oracle JDK要注册账号,嫌麻烦可以去下OpenJDK的tar.gz包,比如Adoptium Temurin。
先检查系统有没有旧Java,有的话可以留着后面用update-alternatives切换,也可以先卸载。
java -version
创建统一的JVM存放目录,比随便放/usr/local更规范。
sudo mkdir -p /usr/lib/jvm
把下载好的tar.gz包传到服务器,比如传到~/Downloads,然后解压到刚才的目录。记得把jdk-17.0.11换成你自己的文件名。
cd ~/Downloads
sudo tar -xvzf jdk-17.0.11_linux-x64_bin.tar.gz -C /usr/lib/jvm
配置环境变量,推荐全系统级的/etc/profile,所有用户都能用。别用/etc/environment,它不支持$PATH这种shell变量扩展。
sudo vim /etc/profile
跳到文件末尾,按i插入,加上这几行。JAVA_HOME要指向你解压后的JDK根目录,不是bin目录。
# Java环境变量
export JAVA_HOME=/usr/lib/jvm/jdk-17.0.11
export PATH=$JAVA_HOME/bin:$PATH
# 旧版JDK(1.5之前)需要CLASSPATH,新版可以不加,但有的老应用可能依赖
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
按Esc,输入:wq保存退出,然后让配置立即生效。
source /etc/profile
验证必须做两个,java是运行环境,javac是编译器,都要有才行。
java -version
javac -version
再写个HelloWorld确认能跑通。
mkdir ~/java-test && cd ~/java-test
vim HelloWorld.java
输入简单的代码,保存退出。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Linux Java!");
}
}
编译运行,应该能看到输出。
javac HelloWorld.java
java HelloWorld
如果装了多个版本,用update-alternatives切换。先把手动装的加进去,优先级随便给,数字大的优先级高。
# 添加java
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.11/bin/java 2
# 添加javac
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17.0.11/bin/javac 2
列出所有可选版本,按提示输入序号切换。
sudo update-alternatives --config java
sudo update-alternatives --config javac
遇到权限不足,要么命令前加sudo,要么改目录权限。
sudo chmod -R 755 /usr/lib/jvm
环境变量配置后还是提示java: command not found,先确认echo JAVA_HOME/bin,再重新source一次,或者重启终端试试。
echo $PATH
source /etc/profile