M1 Mac 无法成功启动 Nacos

1,222 阅读3分钟

M1 Mac 无法成功启动 Nacos

复现操作

  1. 到 github 下载 release 版本
  2. 解压得到

image.png

  1. 终端命令 cd bin 进入找到启动脚本文件 startup.sh image.png

  2. 先循例更改一下文件权限 chmod -R 777 startup.sh

  3. 启动命令 sudo ./startup.sh -m standalone

image.png 7. 上分一大串指令是先取到 java 的路径, 然后用系统默认的 java 版本启动 jar 包, 后面是一系列的启动参数, 最后很诡异说正在启动 nacos 单机模式, 但实际上并没有告诉你是否启动成功, 实际就是失败了. 然后提示去查看日志. 8. cd ../logs 命令返回上层并且进入 logs 文件夹查看日志文件, 得到如下

image.png

  1. 最后一个提示比较关键就是没找对应的文件夹或者文件, 破案了, java 调用路径错误了, 导致连启动 jar 包的 java 都找不到

  2. 这个很短的 /Library/Internet 提示了上面真正执行的脚本命令里有非法空格无法识别(关键错误点)

我已经懒得进去改 startup.sh 文件的脚本了, 后面我仔细看了, 也查了很多资料, 甚至都改过 JAVA_HOME, 牵涉到的因素很多, 踩了不少雷, 最终解决方案就是在路径的空格前面加上 \ 转义字符, 正确识别路径就可以启动成功

sudo /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java  -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Djava.ext.dirs=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/jre/lib/ext:/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/ext -Xloggc:/Users/billbill/Downloads/code/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/Users/billbill/Downloads/code/nacos/plugins/health,/Users/billbill/Downloads/code/nacos/plugins/cmdb -Dnacos.home=/Users/billbill/Downloads/code/nacos -jar /Users/billbill/Downloads/code/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/Users/billbill/Downloads/code/nacos/conf/ --logging.config=/Users/billbill/Downloads/code/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288

得到下图:成功启动

image.png

涉及问题:

  1. 我平时用的 zsh, export JAVA_HOME 也是写到了 .zshrc 文件里, 疯狂 source 都没有作用, 后面看了脚本文件, 跑脚本的终端用的是 bash

image.png 然后屁颠屁颠又去改了 .bash_profile 文件, export JAVA_HOME, source 一样没用, 启动脚本跑起来还是用的系统默认的 jdk 2. 我的 mac 上装了多个 jdk, 我也脑溢血了, 一个是 idea 里一键下载的, 一个是我学习的时候上 oracle 官网学着下载的, 一个是 mac 系统自带的, 可以通过 /usr/libexec/java_home -v 输出

image.png

真是脑溢血, 然后我顺着这些路径再次看了一下这些 jdk, 发生了 1. 上面的各种到 zsh 跟 bash 的配置文件里 export 然后 source, 通通都没用

END:

最后看了下日志, 看到输出的最终的启动完整脚本语句, 把路径改正确, 能找到 java 之后才启动成功, 真恶心啊 还是回归最初的原则就是找到机子上的 java 去启动 jar 包, 然后输入一些配置的参数, 跟 c 语言的 main 程序启动差不多输入一堆 args, 就可以顺利启动了, 脚本文件唉基本没什么用还容易让人花更大的力气去修改脚本文件, 简直吃力不讨好, 还不如自己照着启动语句照猫画虎, 正确改好路径就成功启动了, 真的脑溢血