【问题标题】:Cassandra does not start on Java 10Cassandra 无法在 Java 10 上启动
【发布时间】:2018-10-25 23:55:04
【问题描述】:

我有一个全新的 Windows 10 Home 安装,以及一个全新的 JDK 10.0.1 安装(这是我去 JDK 下载站点时 Oracle 推荐的。)我刚刚下载了 Cassandra 3.11.2,un -tar'd,然后将 bin 目录放在我的类路径中。

当我尝试使用 cassandra -f 命令启动 Cassandra 时,出现以下错误:

PS C:\javatools> cassandra -f
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
WARNING! Automatic page file configuration detected.
 It is recommended that you disable swap when running Cassandra
 for performance and stability reasons.
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
Failed 64-bit check. Re-running to get version from 32-bit
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
Cassandra 3.0 and later require Java 8u40 or later.

Java 10 显然是“Java 8 rel 40 或更高版本”。我确认我实际上正在运行我认为的 Java 版本:

PS C:\javatools> java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

我怎样才能让 Cassandra 识别出我确实拥有“Java 8u40 或更高版本”?

【问题讨论】:

  • 开发社区现在有一些关于如何处理 Java 新的 6 个月发布计划的讨论。但是坚持使用 Java 8,你不会出错。
  • 让我感到困惑的是,像我这样的敏捷开发人员如何坚持为他们的用户提供超短的发布周期(例如 2 周),然后当自己的供应商继续这样做时,一切都变得不正常了类似的东西。

标签: cassandra cassandra-3.0


【解决方案1】:

Cassandra 不支持任何比 Java 8 更新的 Java 版本。

参考如下:

此外,尽管文档确实表明这是“正在进行的工作”,但它确实在 Getting Started 页面上指出了以下内容:

先决条件

Java 8 的最新版本,即 Oracle Java 标准版 8 或 OpenJDK 8。验证您是否拥有正确的 java 版本 已安装,输入 java -version。

虽然它没有明确表示“不支持 Java 9 和更新版本”,但这显然应该是从这个指标推断出来的。

最后,误导性错误消息似乎是一个不会修复的项目。

【讨论】:

  • 轻微修正:CASSANDRA-9608 未被拒绝,它处于“准备提交”状态
  • 好吧,鉴于 Java 9 即将结束,甚至不再可下载,我不完全确定这有多大帮助。再加上 14446 票确实将 9608 称为“证明”,所以......
  • 我相信计划是在 cassandra 4.0 上支持 java 11
【解决方案2】:

我已经设法在本地主机 (ubuntu 18.04) 上的 java-11-openjdk-amd64 上运行 cassandra 3.11.3。 (奇怪的是,java -version 显示openjdk version "10.0.1" 2018-04-17

我在 jvm.options 中进行了很多调整,因为许多 gc 选项不再支持,并且 ThreadPriorityPolicy 无法设置为 42。(最后一点最烦人:压缩线程的优先级非常低)。

另外,要运行nodetool,我必须通过JAVA_HOME 指定jvm 1.8。

【讨论】:

  • 您已经成功运行它的事实并不能帮助其他人。您应该更准确地了解您使用了哪些选项和参数!
  • 我没有保存配置文件,但重复我的调查并不难。只需 10 到 15 分钟,瞧,你有工作的 cassandra。
  • 1.我怀疑你只是通过调整 jvm 选项来“工作 cassandra”。您可能已经设法启动它,但在 java 11 上正常工作而没有问题是另一回事。 2.“在 jvm.options 中进行了很多调整”与 10-15 分钟相矛盾,瞧……
  • 1.好吧,我是在我的工作计算机上完成的,它不是生产计算机。但是我能够毫无问题地与 cassandra 交互(对插入数据进行压力测试并查询它们)。有一个已知的回归绑定到 ThreadPriorityPolicy=42 :cassandra 将无法将压缩线程设置为低优先级。但是,如果您在稳定状态下有 1-2 个 cpu 核心空闲,那么这不是问题。
  • 2.最烦人的事情是找到如何在没有初始化脚本的命令行中运行 cassandra 的方法。 sudo -u cassandra cassandra。之后,您尝试运行的每个 tume 都会看到您需要评论的下一个 jvm 选项。 10-15 分钟,瞧。
猜你喜欢
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2017-11-21
相关资源
最近更新 更多