卡桑德拉3.0及以上版本需要Java 8u40或更高版本。

13

我正在尝试在Datastax中运行Cassandra 3.0,但是出现了以下错误:

Cassandra 3.0及更高版本需要Java 8u40或更高版本。

我已经安装了Java,并将jdk1.8.0_65移动到/usr/local/java并将JAVA_HOME设置为/usr/local/java/jdk1.8.0_65,但我仍然面临以上错误。


你使用的是哪个发行版?我在Ubuntu上找到了一个解决方案,如果有帮助的话,我会写出来。 - John Powell
我正在使用DataStax。从那里学习Cassandra,因此使用DataStax分发版。 - Nandakishore
10个回答

5

我在CentOS 7上安装了Cassandra 3.2 DataStax Distribution rpm,并遇到了同样的问题。Cassandra启动脚本/etc/rc.d/init.d/cassandra只会在预定义的路径列表中查找java二进制文件。

JVM_SEARCH_DIRS="/usr/lib/jvm/jre /usr/lib/jvm/jre-1.7.* /usr/lib/jvm/java-1.7.*/jre"

如果你的java二进制文件位于/usr/jdk64/jdk1.8.0_60/jre/bin/java,请将/usr/jdk64/jdk1.8.0_60/jre添加到JVM_SEARCH_DIRS中,或者为/usr/jdk64/jdk1.8.0_60/jre创建一个指向/usr/lib/jvm/jre的符号链接。


3

检查你的Java版本。如果你的Java版本是“1.8.0_40”或更高版本,那么请前往apache-cassandra-3.7\conf\cassandra-env.ps1文件,然后搜索这个词JVM_VERSION.CompareTo("1.8.0_40")并将其更改为你的版本。 例如,如果你使用的是java 1.8.0_102,则更改为JVM_VERSION.CompareTo("1.8.0_102")。

现在,请检查是否可以运行。


2

我通常通过在提供给 DataStax$DSE_DIR/resources/cassandra/conf/cassandra.in.sh$DSE_DIR/bin/dse.in.sh 脚本中添加特定的 JAVA_HOME 来解决此问题。
在每个脚本中添加:JAVA_HOME=/usr/local/java/jdk1.8.0_65。 (如果想要在不重新编辑这些文件的情况下交换JVM,则可以使用symlink。)


2
以下方法在RHEL系统上适用:
yum install java-1.8.0-openjdk
ln -nfs /usr/lib/jvm/jre-1.8.0-openjdk.x86_64 /etc/alternatives/jre
ln -nfs /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java /etc/alternatives/java

这个解决方案在亚马逊 EC2 AMI 上对我有效,谢谢。 - phcaze

2

我也遇到了同样的问题。我的解决方法是编辑文件apache-cassandra-3.7/bin/cassandra。在包含“#!/bin/sh”(第二行)的行下面,您可以放置以下行:

JAVA_HOME="/path/of/your/jdk"

例子:

JAVA_HOME="/opt/jdk1.8.0_101"

希望这个解决方案能够帮助您和其他人。


1
  1. 使用以下命令检查 Java 的第一个版本:java -version
  2. 使用以下命令检查 Java 的路径:echo $JAVA_HOME

1
我首先运行了 update-java-alternatives -s java-8-oracle 命令,但这并没有修复 $JAVA_HOME 指向的软链接(即仍然指向 OpenJDK)... 修复软链接解决了问题。 - Alexis Wilke

0

看起来,cassandra 服务好像只会从 alternatives 中选择 Java 版本。

sudo alternatives --config java

...不要在那里选择Java 9。

sudo service cassandra start

/etc/cassandra/default.conf/jvm.options 包含更多的 JVM 参数。


0

尝试使用alternatives命令:

$ nodetool
Cassandra 3.0 and later require Java 8u40 or later.
$ java -version
java version "1.7.0_151"

$ sudo yum install java-1.8.0-openjdk
... 
$ sudo alternatives --config java

There are 2 programs which provide 'java'.

Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
$ nodetool
usage: nodetool [(-p <port> | --port <port>)]
    [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
    [(-h <host> | --host <host>)] [(-u <username> | --username <username>)]
    [(-pw <password> | --password <password>)] <command> [<args>]

0
请使用以下命令。
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

0

Nodetool 可能仍在访问早期的 Java 版本,我也遇到了同样的问题。

简短地执行以下操作:

sudo vim /etc/environment 添加这一行 JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre/bin/java"

source /etc/environment

echo $JAVA_HOME

nodetool status

详细执行以下操作:

请按照此处的步骤安装和更改系统中安装的 Java 版本。该指南解释得非常清楚明白。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接