在Oracle Java 11上运行Cassandra 2.1.17启动报错如何解决?
核心结论
Cassandra v2.1.17 官方仅兼容 Java 7、Java 8 运行环境,完全不支持 Java 9 及以上版本,无论使用 Oracle Java 11 还是 OpenJDK 11 都无法正常运行,你遇到的报错本质是版本不匹配问题,和 JVM 参数调整无关。
你遇到的 java.lang.NoSuchMethodError: sun.misc.Unsafe.monitorEnter 报错,原因是 Cassandra 2.1.17 自身代码以及其依赖的低版本 Guava 库,都调用了 Java 8 及更低版本才提供的monitorEnter方法:即使 Java 11 保留了sun.misc.Unsafe类,该特定方法已经被移除,所以添加--add-modules=jdk.unsupported参数也无法解决问题。
可行解决方案
- 方案1(最稳妥):将运行环境降级为 Oracle JDK 8 或者 OpenJDK 8,CentOS 6 系统的官方源、第三方源都有对应安装包,无需修改 Cassandra 任何配置即可正常启动。
- 方案2:如果必须使用 Java 11 运行环境,将 Cassandra 升级到 3.11.10 以上版本或者 4.x 版本,这两个版本系列官方原生支持 Java 11,无需额外做兼容适配。
CentOS 6 运行环境补充说明
CentOS 6 已经停止官方维护,不建议继续在生产环境使用。如果必须在 CentOS 6 上使用高版本 JDK,可以直接下载对应架构的 JDK 二进制压缩包,手动解压后配置环境变量即可使用,不需要依赖系统包管理器的安装包。
内容的提问来源于stack exchange,提问作者MeanwhileInHell
相关产品推荐
相关产品推荐

