在 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的主要内容,如果未能解决你的问题,请参考以下文章
在 OpenSuse 上将 Cassandra 作为服务运行
在 ubuntu 14.04 上安装 cassandra 时出错