直接安装openjdk-17-jdk,查清系统代号(如jammy)后执行sudo apt install openjdk-17-jdk;java_home须设为jdk根目录(如/usr/lib/jvm/java-17-openjdk-amd64),写入~/.profile并重启会话;多版本共存时需用update-alternatives同步配置java和javac。

Ubuntu怎么装OpenJDK又快又不踩坑
直接装 openjdk-17-jdk,别用 default-jdk —— 它在不同Ubuntu版本里指向的JDK版本不一致,CI跑通本地却报 UnsupportedClassVersionError 就是它干的。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 查清系统版本:
lsb_release -sc(比如jammy或noble),再对应选包 - 执行:
sudo apt update && sudo apt install openjdk-17-jdk - 验证:
java -version输出里必须含17.和OpenJDK,不是JRE也不是Java(TM) - 别碰
openjdk-17-jre单独装——没javac,写完代码编译就报Command 'javac' not found
JAVA_HOME设不对,Maven/IDEA全罢工
JAVA_HOME 必须指向 JDK 根目录,不是 bin,不是 jre,也不能用 /usr/lib/jvm/java-1.17.0-openjdk-amd64 这种带架构后缀的硬编码路径——换机器或升级系统就挂。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 先查真实路径:
readlink -f $(which java)往上推两级,得到类似/usr/lib/jvm/java-17-openjdk-amd64的结果 - 写进
~/.profile(不是~/.bashrc,后者只对终端生效,GUI应用如IDEA读不到):export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
- 生效:
source ~/.profile,然后echo $JAVA_HOME确认输出无空格、无乱码 - 重启终端或IDEA,再看
mvn -v输出的 Java version 是否和java -version一致
多个JDK共存时,update-alternatives 怎么切才稳
装了11和17还想临时切回11?别改 JAVA_HOME 手动切换——Maven、Gradle、IDE可能缓存旧值,行为不一致。要用系统级调度机制。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 装完多个JDK后,先注册:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 170(末尾数字是优先级,越大越默认) - 再注册
javac:sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 170 - 交互切换:
sudo update-alternatives --config java和--config javac必须**一起执行**,否则java和javac版本不匹配,编译通过但运行报错 - 验证:
java -version和javac -version输出主版本号必须相同
IntelliJ IDEA识别不到JDK?重点看这个路径格式
IDEA 的 Project SDK 设置里粘贴路径时,如果末尾多了斜杠(/usr/lib/jvm/java-17-openjdk-amd64/),它会静默失败——界面显示已选中,但新建项目仍用 bundled JRE,连 System.out 都不输出。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 复制路径前,先
ls -d /usr/lib/jvm/java-*-openjdk-*确认目录存在,再用readlink -f去掉软链干扰 - 在IDEA中:File → Project Structure → Project → Project SDK → Add JDK → 选中那个**无尾随斜杠**的目录
- 别信“Download JDK”按钮——它下的是 JetBrains Runtime(JBR),不是 OpenJDK,某些 JNI 或特定字节码操作会出问题
- 如果已有项目异常,删掉
.idea/misc.xml里project-jdk-name相关行,重启IDEA重新绑定
最常被忽略的是 JAVA_HOME 写进 ~/.profile 后没重启图形会话,或者 update-alternatives 只配了 java 没配 javac。这两处一漏,问题就藏得深,日志里还找不到明确报错。







