说明
M1 芯片的苹果系统无法使用zulu jdk运行NACOS,原因存在两个地方:
1. Nacos 官方(2.0.4)依赖grpc-java的1.26.0.而grpc官方在1.43.0已添加GRPC支持(不用改动版本)
2. Nacos 官方(2.0.4)依赖jraft-core 1.3.8 又因为jraft 依赖rocksdb 的6.22.1.1,而rocksdb 在6.29.3才添加了m1芯片支持。
解决思路
NACOS官方肯定需要测试grpc 1.43.0、以及等待jraft-core修改而rocksdb依赖6.29.3以上版本后测试通过才会发布。
解决方法两种:
- 选择使用rosseta 运行JDK8来使用。(官方稳定)
- 自行修改相关依赖编译。
解决方法1
参考我之前写的M1 芯片下搭建Nacos
解决方法2
一共分两个部分,1.
修改相关依赖
,2.编译
首先下载nacos官方源码。Nacos,执行git checkout -b 2.0.4 2.0.4
切换到2.0.4.修改jraft依赖版本
- 下载jraft项目sofa-jraft
- 执行
git checkout -b 1.3.9 1.3.9
切换到1.3.9 - 修改项目下pom.xml
<rocksdb.version>6.29.3</rocksdb.version>
rocksdb(6.29.3 目前02-25 m2仓库最高6.28.2 ). - 下载rocksdb项目rocksdb,然后执行
git checkout -b v6.29.3 v6.29.3
. - 编译rocksdb项目java-jni包,项目根目录下执行
ROCKSDB_DISABLE_JEMALLOC=0 DEBUG_LEVEL=0 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home make rocksdbjavastatic
一定使用JDK11版本编译。 - mvn本地发布jar到本地仓库
cd java/target&&mvn install:install-file -Dfile=./rocksdbjni-6.29.3-osx.jar -DgroupId=org.rocksdb -DartifactId=rocksdbjni -Dversion=6.29.3 -Dpackaging=jar
- 修改版本号
mvn versions:set -DnewVersion=1.3.9-m1
然后执行mvn versions:commit
- 切换到jraft项目根目录执行
mvn clean install -DskipTests
- 切换到Nacos项目根目录修改pom.xml,
<jraft-core.version>1.3.9-m1</jraft-core.version>
Nacos编译
- 切换到Nacos项目根目录执行
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
- cd distribution/target/ 目录就是编译完成的目录.
运行效果
已编译包
- rocksdb-java-jni包
链接: https://pan.baidu.com/s/1lBiSCO85_M2LsXBKlO17_g?pwd=d35t 提取码: d35t - 已编译NACOS 2.0.4 支持M1的包(未经过严谨测试)
链接: https://pan.baidu.com/s/1Lb1-vzvlRrHY4wNItqGciw?pwd=fwks 提取码: fwks