使用 Nacos 进行服务注册与发现时,常遇到报错:Please set the JAVA_HOME variable...,尤其在多 JDK 环境下需指定 JDK17 时更为常见。
问题现象
在命令行中执行 startup.cmd -m standalone 启动 Nacos 时,提示需要设置 JAVA_HOME 环境变量。

原因分析
Nacos 启动时会默认读取系统环境变量中的 JAVA_HOME,但如果安装了多个 JDK(如 JDK8、JDK17 等),且未正确配置或指定 Nacos 使用的 JDK 版本,就会出现此问题。
解决过程
方案一:临时指定 JDK17 为默认 JAVA_HOME
这种方式仅在当前 CMD 窗口生效,不会影响其他程序对 JDK 的使用,非常灵活。
-
设置
JAVA_HOME为 JDK17 路径 打开新的 CMD 窗口,执行以下命令(将路径替换为你实际的 JDK17 安装路径):set JAVA_HOME=D:\Software\Java\jdk-17 -
启动 Nacos 接着在同一个 CMD 窗口中,进入 Nacos 的
bin目录,执行启动命令:startup.cmd -m standalone此时 Nacos 就能基于我们指定的 JDK17 正常启动了。
方案二:修改 Nacos 启动脚本,强制指定 JDK17 路径
如果需要长期使用 JDK17 启动 Nacos,可以修改 Nacos 的启动脚本。
编辑 startup.cmd 脚本
找到 Nacos 安装目录下 bin 文件夹中的 startup.cmd 文件,用记事本或其他文本编辑器打开。

指定 JDK17 路径
在 startup.cmd 文件开头(@echo off 下方)添加一行,指定 JDK17 的路径(同样替换为自己的实际路径):
set JAVA_HOME=D:\Software\Java\jdk-17
保存并启动 Nacos
保存修改后的 startup.cmd 文件,然后在 CMD 中执行 startup.cmd -m standalone,Nacos 就会使用 JDK17 启动。


