【问题标题】:Cassandra 3.0 and later require Java 8u40 or laterCassandra 3.0 及更高版本需要 Java 8u40 或更高版本
【发布时间】:2016-03-28 02:02:56
【问题描述】:

我正在尝试在 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 或更高版本。

【问题讨论】:

  • 您使用的是什么发行版?我为 Ubuntu 找到了一个解决方案,如果有帮助,我会写下来。
  • 我正在使用数据税。从那里学习 cassandra,因此使用 datastax 分布。

标签: cassandra java-home cassandra-3.0


【解决方案1】:

我在 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 符号链接。

【讨论】:

    【解决方案2】:

    检查您的 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")。

    现在,检查。它会起作用的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        以下内容适用于 RHEL 系统:

        百胜安装 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

        【讨论】:

        • 这个解决方案在 Amazon EC2 AMI 上为我工作,谢谢。
        【解决方案5】:

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

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

        示例:

        JAVA_HOME="/opt/jdk1.8.0_101"
        

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

        【讨论】:

          【解决方案6】:
          1. 使用这个命令java -version检查java的第一个版本
          2. 使用此命令检查java的路径echo $JAVA_HOME

          【讨论】:

          • 我先找到update-java-alternatives -s java-8-oracle,但这并没有修复$JAVA_HOME 指向的软链接(即仍然在OpenJDK 上)...修复软链接解决了问题。跨度>
          【解决方案7】:

          使用以下命令。

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

          【讨论】:

            【解决方案8】:

            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版本。它解释得很好。

            【讨论】:

              【解决方案9】:

              尝试使用 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>]
              

              【讨论】:

                【解决方案10】:

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

                sudo alternatives --config java
                

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

                sudo service cassandra start
                

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-10-26
                  • 1970-01-01
                  • 2020-12-11
                  • 1970-01-01
                  相关资源
                  最近更新 更多