M2 MacBook上JUnit测试Hoverfly启动失败(IllegalStateException)
解决M2 MacBook上JUnit测试启动Hoverfly失败的问题
问题根源
报错Bad CPU type in executable明确说明:当前下载的Hoverfly二进制文件是x86_64(amd64)架构,但M2 MacBook采用的是Apple Silicon(arm64)架构,两种架构的可执行文件不兼容,导致无法启动Hoverfly进程。
解决方案
1. 升级Hoverfly Java库版本
确保项目中使用的hoverfly-java依赖版本 >= 0.14.0(该版本开始支持Apple Silicon架构的自动下载)。如果使用Maven,更新pom.xml中的依赖:
<dependency> <groupId>io.specto</groupId> <artifactId>hoverfly-java</artifactId> <version>最新兼容版本</version> <scope>test</scope> </dependency>
2. 强制指定arm64架构下载
如果升级后仍自动下载amd64版本,在运行JUnit测试时添加JVM参数,强制指定下载arm64版本的Hoverfly:
# Maven运行测试时添加参数 mvn test -Dhoverfly.download.platform=OSX_arm64 # IDE中配置JVM参数 -Dhoverfly.download.platform=OSX_arm64
3. 手动替换二进制文件(备选)
- 下载对应arm64架构的Mac版本Hoverfly二进制文件;
- 找到测试运行时Hoverfly临时存放的目录(日志中显示的
/var/folders/.../hoverfly.xxx/路径); - 将下载的arm64版本二进制文件命名为
hoverfly_OSX_arm64,替换原有的hoverfly_OSX_amd64文件。
4. 临时兼容方案:启用Rosetta 2
如果暂时无法升级依赖,可以安装Rosetta 2来兼容x86_64程序:
softwareupdate --install-rosetta
注意:这只是临时 workaround,长期建议使用原生支持arm64的版本。
内容的提问来源于stack exchange,提问作者JosephH
相关产品推荐
相关产品推荐

