直接说结论:Amazon Corretto 8。点击链接,找到macOS aarch64
栏,下载你想要的打包即可。
下面分享我用zulu JDK1.8的踩坑经过:
最近因为工作原因,我的技术栈从go迁移到了java+spring,所以也不得不搭建一个JDK本地环境。
因为公司发的电脑是M2的macbook,我,作为m1芯片的多年用户,在查询到Oracle OpenJDK1.8不原生支持aarch64后,果断搜索了有没有原生支持的非官方版本。
当时搜索引擎给出最多的结果是Azul的Zulu JDK,于是我马上下载并正常使用了一段时间。
直到一周前,我在做某些单元测试的时候发现,老是会异常抛出InvocationTargetException
然后Test Ignored。查资料后发现是反射内部抛出了错误但是没有被处理,于是使用debug模式分析了一下出错的堆栈,发现了一个非常离谱的报错:
1 | java.lang.IllegalStateException: Cipher not initialized |
代码是没有问题的,那么大概率是编译器的问题了。无非就两种可能:aarch64编译有问题,或者zulu有问题。为了排查,我下载了x86的zulu,发现两种zulu都无法完成测试并且同样抛出上述异常,所以考虑为是zulu的bug。
于是我重新寻找了有没有别的macOS下aarch64的OpenJDK1.8,于是就发现了AWS自己build的OpenJDK1.8即Amazon Corretto 8,下载安装后使用到今天未发现任何异常。