阿里云认证失败申诉 阿里云服务器部署Java环境

阿里云国际 / 2026-04-17 13:12:52

各位正在阿里云控制台疯狂点击、满屏红色报错、对着java -version返回command not found发呆的Java开发者们——别关页面!你不是一个人在战斗,也不是脑子坏了,只是被Linux和Java联手演了一出《谁动了我的JAVA_HOME》。

今天不讲虚的,不甩命令就跑,不堆术语唬人。咱们就当是两个老同事蹲在机房角落,泡着枸杞茶,一条命令一条命令地把Java环境从0部署到能跑Spring Boot的稳当状态。顺便,把那些藏在文档缝里的坑,全给你扒出来、踩平、撒上盐。

第一步:选对“地基”——服务器系统别乱挑

别一上来就冲去选“最新版Ubuntu 24.04 LTS”,先摸清你的项目底色:Spring Boot 3.x 要求 JDK 17+,但你公司老系统还在用JDK 8跑着祖传代码?那咱得务实点。

推荐组合:CentOS 7.9(已停更但稳定)或 Alibaba Cloud Linux 3(阿里亲儿子,内核优化+长期支持)。为什么不用Ubuntu?不是它不好,是它默认装OpenJDK,而很多国产中间件(比如东方通、金蝶)只认Oracle JDK或特定OpenJDK发行版。Alibaba Cloud Linux 3预装了openjdk-17,省心又合规。

创建ECS时,在镜像页直接搜“Alibaba Cloud Linux”,选带“3.x”的那个——别手滑点成“2.x”,那是上古版本,连dnf都不认识你。

第二步:登录之后,先干三件事

SSH连上服务器后,别急着装JDK,先做三件“扫地僧式”动作:

  1. sudo su - —— 切到root,省得每条命令敲sudo,也避免权限不足导致/usr/local写不进文件;
  2. hostnamectl —— 看一眼系统版本,确认是不是你选的Alibaba Cloud Linux 3;
  3. locale -a | grep zh_CN —— 检查中文支持。如果没结果?别慌,执行localectl set-locale LANG=zh_CN.UTF-8,不然某些中文路径或日志会变问号。

第三步:JDK安装——两种路子,按需取用

✅ 方案A:官方包手动安装(推荐!可控性强)

Eclipse Temurin官网(原AdoptOpenJDK)下载tar.gz包。别下Windows版!找Linux x64的jdk-17.0.1+12这类命名的压缩包。上传到服务器用scp,或直接wget

wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz

解压到/usr/local(标准Unix习惯):

tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz -C /usr/local/
ls -l /usr/local/ | grep jdk

你会看到类似jdk-17.0.1+12的文件夹。为方便后续升级,建议建软链接:

ln -sf /usr/local/jdk-17.0.1+12 /usr/local/jdk

✅ 方案B:用dnf/yum一键装(适合快速验证)

Alibaba Cloud Linux 3自带dnf:

dnf list available java-* | grep jdk

找到java-17-openjdk-devel.x86_64,装它:

dnf install -y java-17-openjdk-devel

装完路径在/usr/lib/jvm/java-17-openjdk-*,同样建议软链:

ln -sf /usr/lib/jvm/java-17-openjdk-*/ /usr/local/jdk

第四步:环境变量——写错一个字母,全盘皆输

重点来了!很多人卡在这步,反复source还是java: command not found。问题往往出在:写了/etc/profile,却忘了export JAVA_HOME;或者写了JAVA_HOME,却漏了PATH=$JAVA_HOME/bin:$PATH

打开/etc/profile(全局生效,所有用户可用):

vim /etc/profile

在文件末尾,**严格按顺序**加这三行(注意等号前后无空格!路径用你自己的!):

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:$PATH

⚠️ 关键提醒:
JAVA_HOME必须指向JDK根目录,不是bin,不是jre
PATH${JAVA_HOME}/bin一定要放在最前面,否则系统可能优先调用/usr/bin/java(老版本);
• 别写export PATH=$PATH:${JAVA_HOME}/bin——这是把JDK放后面,大概率失效。

保存退出,立即生效:

source /etc/profile

第五步:验证——别信感觉,要信命令

执行三连测:

echo $JAVA_HOME      # 应输出 /usr/local/jdk
java -version        # 应显示 17.0.1 或类似
javac -version       # 必须有!没这个,你装的是JRE不是JDK

如果javac报错?说明你装的是JRE包,重下JDK版。如果java -version显示1.8.0_301?说明PATH没生效,回头检查source是否漏了,或which java看它到底调了哪个。

第六步:终极加固——防止重启失联

阿里云认证失败申诉 有人改完/etc/profile,reboot后发现Java又没了?大概率是:你用的是非root用户SSH登录,而该用户shell启动时加载的是~/.bashrc,不是/etc/profile

保险起见,在~/.bashrc里也追加一遍(非必须,但安心):

echo 'export JAVA_HOME=/usr/local/jdk' >> ~/.bashrc
echo 'export PATH=${JAVA_HOME}/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

彩蛋:附赠一个Spring Boot部署小技巧

环境配好后,扔个demo.jar试试?别直接java -jar demo.jar就走人。生产环境请用:

nohup java -Xms512m -Xmx1024m -jar demo.jar --spring.profiles.active=prod > app.log 2>&1 &

解释一下:
nohup:防止SSH断开进程被杀;
-Xms/-Xmx:别让JVM野蛮生长吃光内存;
> app.log 2>&1:标准输出和错误都进日志,方便排查;
&:后台运行。

最后唠叨两句

部署Java环境,本质不是背命令,而是理解Linux的路径哲学、Shell的加载机制、JVM的启动逻辑。你今天多敲一次echo $PATH,明天就能少盯两小时“Connection refused”。

另外,阿里云ECS安全组记得开放8080端口(如果你的Spring Boot监听这个);如果用Nginx反向代理,记得关SELinux或配策略——这些,下次再聊。

现在,去终端敲下java -version吧。当那一行绿色的版本号稳稳出现时,你不是完成了个任务,是拿到了通往云原生世界的钥匙——虽然这把钥匙长得像段命令,还带着点咖啡因的味道。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系