在 Java 11 上运行 Cassandra 2.1.17

Posted

技术标签:

【中文标题】在 Java 11 上运行 Cassandra 2.1.17【英文标题】:Running Cassandra 2.1.17 on Java 11 【发布时间】:2021-12-24 21:29:33 【问题描述】:

我正在尝试使用 Java 11 (Oracle) 运行 Cassandra v2.1.17,但无法启动它。我已将 cassandra-env.sh 中的所有 JVM 参数更新为 Java 11 等效项,但现在启动时出现以下错误:

ERROR 14:48:10 Exception encountered during startup
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: sun.misc.Unsafe.monitorEnter(Ljava/lang/Object;)V
   at com.google.common.base.Throwables.propagate(Throwables.java:160) ~[guava-16.0.jar:na]
   ...
   ...
   ...
Caused by: java.lang.NoSuchMethodError: sun.misc.Unsafe.monitorEnter(Ljava/lang/Object;)V

我已经仔细研究了一下,似乎这个类在 Java 9 中被删除了,或者至少被弃用了,但仍然可以使用--add-modules=jdk.unsupported 访问。将此添加到我的 JVM 参数中没有帮助。

是否可以在 Oracle Java 11 上运行 Cassandra 2.1.17?我可以看到该类仍在 OpenJDK 11 (https://hg.openjdk.java.net/jdk/jdk11/file/6889f13694c6/src/jdk.unsupported/share/classes/sun/misc/Unsafe.java) 中,但我被困在使用 Centos6 并且找不到它的安装。

【问题讨论】:

不可能,你必须降级到 Java 8。 【参考方案1】:

@MeanwhileInHell,JDK 11 对 Apache Cassandra(R) 的支持仅在最近的 Cassandra 4.0 版本中进行了探索,我认为它在 2.x 等非常旧且不受支持的版本中不可用。有关更多详细信息,请参阅https://cassandra.apache.org/doc/latest/cassandra/new/java11.html 文档。

https://issues.apache.org/jira/browse/CASSANDRA-9608 有详细信息。

【讨论】:

以上是关于在 Java 11 上运行 Cassandra 2.1.17的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 因压缩和清理而挂起

在 OpenSuse 上将 Cassandra 作为服务运行

Cassandra 数据库安装部署

在 ubuntu 14.04 上安装 cassandra 时出错

从 Cassandra 2.1.3 + Stargate 上的键空间清除数据的问题

工具Cassandra 2.1正式发布,引入CQL3元组和用户定义类型