如何在M1芯片Mac设备上成功运行MariaDB4J?
解决M1 MacBook Pro上MariaDB4J的libssl架构不兼容问题
我之前在M1 MacBook Pro上折腾过MariaDB4J,刚好碰到过一模一样的架构不兼容问题,给你几个亲测可行的解决思路:
1. 用Rosetta 2运行进程
MariaDB4J的核心二进制可能还是x86_64架构的,所以最简单的办法是让它在Rosetta兼容层下运行:
- 打开Finder找到「终端」,右键选择「显示简介」,勾选「使用Rosetta打开」,然后在这个终端里重新启动你的项目(比如执行Maven/Gradle构建命令)。
- 如果你不想全局用Rosetta终端,也可以单独给启动命令加架构前缀:
这样你的Java进程(以及内嵌的MariaDB4J)会以x86_64模式运行,就能兼容x86版本的依赖了。arch -x86_64 java -jar your-application.jar
2. 安装x86_64版本的libssl@1.1
既然系统需要x86版本的libssl,我们可以单独装一套x86架构的Homebrew和依赖:
- 用Rosetta终端执行Homebrew安装命令(会安装到
/usr/local/homebrew路径):arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装x86版本的libssl@1.1:
arch -x86_64 brew install libssl@1.1 - 重新创建符号链接,指向x86版本的库文件:
sudo ln -s /usr/local/homebrew/opt/libssl@1.1/lib/libssl.1.1.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib sudo ln -s /usr/local/homebrew/opt/libssl@1.1/lib/libcrypto.1.1.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
3. 升级到支持Apple Silicon的MariaDB4J版本
有些旧版本的MariaDB4J没有适配arm64架构,你可以去查一下最新的release版本,看看是否已经添加了Apple Silicon的支持。如果有,直接升级依赖版本,可能就能跳过符号链接和架构兼容的问题。
4. 手动替换内置的MariaDB二进制
MariaDB4J本质是打包了MariaDB的二进制文件,你可以替换成arm64版本的二进制:
- 找到你的项目中依赖的MariaDB4J jar包,解压后找到内置的MariaDB二进制目录(通常是
mariadb4j/bin之类的路径)。 - 把你通过Homebrew安装的arm64版MariaDB的二进制文件(比如
mysqld、mysql等)替换进去。 - 重新打包jar,或者在启动MariaDB4J时通过配置指定自定义的二进制路径(具体可以参考MariaDB4J的文档)。
内容的提问来源于stack exchange,提问作者Mathias
相关产品推荐
相关产品推荐

