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

时间:2015-12-21 22:07:23

标签: cassandra java-home cassandra-3.0

我试图在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

但我仍然面临以下错误。

  

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

10 个答案:

答案 0 :(得分: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/lib/jvm/jre添加/usr/jdk64/jdk1.8.0_60/jre符号链接。

答案 1 :(得分: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 :(得分:2)

我通常会通过将JAVA_HOME添加到$DSE_DIR/resources/cassandra/conf/cassandra.in.sh提供的$DSE_DIR/bin/dse.in.shDataStax脚本中来解决这个问题。 在每个中添加:JAVA_HOME=/usr/local/java/jdk1.8.0_65。 (或symlink,如果您希望能够在不重新编辑这些文件的情况下交换JVM。)

答案 3 :(得分: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

答案 4 :(得分:1)

  1. 使用此命令java -version
  2. 检查java的第一个版本
  3. 使用此命令echo $JAVA_HOME
  4. 检查java的路径

答案 5 :(得分:1)

我也有同样的问题。我的解决方案是编辑文件apache-cassandra-3.7 / bin / cassandra。在包含“#!/ bin / sh”(第2行)的行下方,您可以放置​​如下所示的行

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

示例:

JAVA_HOME="/opt/jdk1.8.0_101"

希望此解决方案可以帮助您和其他人

答案 6 :(得分:0)

使用以下命令。

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

答案 7 :(得分: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

长期这样做

请按照here步骤安装和更改系统中安装的java版本。它解释得非常好。

答案 8 :(得分:0)

尝试使用 alternative 命令:

$ 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>]

答案 9 :(得分:0)

似乎cassandra服务只会从alternatives获取Java版本。

sudo alternatives --config java

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

sudo service cassandra start

/etc/cassandra/default.conf/jvm.options还有其他JVM参数。