必须先安装OpenJDK 11开发包(sudo apt install openjdk-11-jdk),再配置JAVA_HOME与PATH至/etc/environment,最后重启会话验证;若需特定版本可手动解压Adoptium JDK至/opt/java并配置~/.bashrc。

在统信UOS系统中运行Java程序或开发Java项目时,若执行java -version报错“command not found”或javac不可用,说明JDK未安装或JAVA_HOME、PATH环境变量缺失,必须完成安装与配置两个环节才能正常使用。
通过APT安装OpenJDK并配置系统级环境变量
该方式依赖UOS官方软件源,路径规范统一(默认位于/usr/lib/jvm/),自动处理依赖,适用于桌面版与服务器版,且便于后续升级管理。
打开终端,执行:sudo apt update && sudo apt install openjdk-11-jdk
安装完成后立即验证基础命令:java -version和javac -version应均输出版本信息;若任一命令失败,说明安装异常,需重试上一步。
立即学习“Java免费学习笔记(深入)”;
提取JDK真实根路径:执行readlink -f $(which java) | sed 's|/bin/java||'→典型输出为/usr/lib/jvm/java-11-openjdk-amd64。【请完整复制该输出路径,不要手动删减任何字符】
编辑系统级环境文件:sudo nano /etc/environment,在文件末尾新增两行(注意:无export关键字,无$符号,路径用英文双引号包裹,PATH需保留原有值):
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
PATH="/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH"
保存退出(nano中按Ctrl+O→回车→Ctrl+X),然后关闭所有终端窗口,重新登录图形会话或重启系统——这一步不可跳过,仅source无法使GUI程序识别新变量。
手动解压Adoptium JDK并配置用户级环境
当你需要特定版本(如JDK 17、JDK 21)、必须使用Eclipse Temurin构建的JDK,或APT源中无对应架构包时,适用此方法。它不依赖系统包管理器,路径完全可控,但需自行保障权限与完整性。
方法一:下载并解压到/opt/java
访问https://adoptium.net下载Linux x64或aarch64的tar.gz包(例如jdk-17.0.1+12-hotspot.tar.gz)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
将压缩包移至/opt并解压:sudo mkdir -p /opt/java && sudo tar -xzf jdk-*.tar.gz -C /opt/java/
确认解压后存在bin/java和bin/javac:ls /opt/java/jdk-*/bin/java /opt/java/jdk-*/bin/javac
方法二:配置当前用户环境
编辑用户Shell配置文件:nano ~/.bashrc(若使用zsh则为~/.zshrc)。
在文件末尾添加两行(路径请严格替换为上一步中ls实际显示的完整目录名,例如/opt/java/jdk-17.0.1+12-hotspot):
export JAVA_HOME=/opt/java/jdk-17.0.1+12-hotspot
export PATH=$JAVA_HOME/bin:$PATH
执行source ~/.bashrc使配置立即生效。
验证Java开发环境是否真正可用
必须在**全新打开的终端窗口**中逐条执行以下命令,不能复用之前已开启的终端,否则可能因缓存导致误判。
第一步:检查JAVA_HOME是否被正确加载:echo $JAVA_HOME→应输出完整JDK根路径,不含/jre或/bin子串。
第二步:确认PATH中已包含JDK的bin目录:echo $PATH | grep jvm或echo $PATH | grep java→应看到对应路径片段。
第三步:同时验证运行与编译能力:java -version && javac -version→两行输出均需显示有效版本号,且无“command not found”提示。
第四步:测试简单编译流程:创建Hello.java,写入public class Hello { public static void main(String[] args) { System.out.println("OK"); } },然后执行javac Hello.java && java Hello→终端应打印OK。

















