M1 Mac上Quarkus开发模式启动失败,报Unable to deserialize the dev mode context错误
M1 Mac上Quarkus开发模式启动失败,报Unable to deserialize the dev mode context错误
我之前在M1 MacBook上折腾Quarkus开发模式时,也碰到过完全一模一样的序列化错误,当时各种清缓存、换版本都试过,折腾了好久才找到几个针对Apple Silicon的有效解决方向,你可以逐一尝试:
1. 优先排查Java架构适配性
M1是ARM架构,虽然OpenJDK 17多数版本都宣称支持,但有些JDK可能仍以x86_64兼容模式运行,这会直接导致Quarkus开发模式的IPC通信出问题:
- 打开终端执行
java -version,看输出里有没有aarch64字样,如果显示的是x86_64,说明你装的是x86版本的JDK,必须换成ARM原生版(比如Azul Zulu的ARM版、Oracle JDK 17的ARM版)。 - 用
/usr/libexec/java_home -V查看已安装的JDK列表,确认ARM版本的路径,然后把它设为默认JDK:
把这个命令加到你的export JAVA_HOME=$(/usr/libexec/java_home -v 17 -a aarch64)~/.zshrc或者~/.bash_profile里,避免每次重启终端都要重新设置。
2. 强制Quarkus拉取ARM原生依赖
有时候Maven会默认拉取x86架构的Quarkus相关依赖,即使你用的是ARM JDK。可以在pom.xml的<properties>标签里添加配置,强制指定架构:
<os.detected.arch>aarch64</os.detected.arch> <quarkus.native.builder.image>quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-17</quarkus.native.builder.image>
然后执行mvn clean install -DskipTests重新构建依赖。
3. 关闭IntelliJ自动构建(如果用IDEA开发)
我当时用IntelliJ时,发现自动构建功能会和Quarkus开发模式产生冲突,导致序列化上下文损坏:
- 打开IDEA的「Settings → Build, Execution, Deployment → Compiler」,取消勾选「Build project automatically」。
- 之后不要用IDEA的内置运行按钮,直接在终端里执行
mvn quarkus:dev启动项目。
4. 清理Quarkus本地开发缓存
除了清~/.m2,还要注意项目target目录下的Quarkus专属缓存,这个缓存损坏的概率很高:
rm -rf target/quarkus-dev-mode-cache
执行完再重新启动开发模式。
5. 排查终端环境变量干扰
有时候终端里的JAVA_TOOL_OPTIONS或MAVEN_OPTS会带有冲突参数,比如调试代理、临时目录权限问题等:
- 执行
env | grep JAVA和env | grep MAVEN,检查有没有奇怪的参数。 - 可以临时清空这些变量再试:
unset JAVA_TOOL_OPTIONS unset MAVEN_OPTS mvn quarkus:dev
我当时是换了ARM原生的Azul Zulu JDK,加上强制依赖架构的配置后解决的问题,你可以先从JDK架构这个点入手,毕竟M1上很多Java生态的问题根源都是架构不兼容。
内容来源于stack exchange
相关产品推荐
相关产品推荐

