当我安装Java 7时,cassandra 2抱怨Java 7

时间:2014-06-12 17:03:47

标签: java cassandra

$ cassandra 
Cassandra 2.0 and later require Java 7 or later.

好的,init脚本的那一部分发生了什么?

java_ver_output=`"${JAVA:-java}" -version 2>&1`

jvmver=`echo "$java_ver_output" | awk -F'"' 'NR==1 {print $2}'`
JVM_VERSION=${jvmver%_*}
JVM_PATCH_VERSION=${jvmver#*_}


if [ "$JVM_VERSION" \< "1.7" ] ; then
    echo "Cassandra 2.0 and later require Java 7 or later."
    exit 1;
fi

嗯,如果我在命令行获得版本:

$ java_ver_output=`"${JAVA:-java}" -version 2>&1`

$ echo $java_ver_output
java version "1.7.0_55" Java(TM) SE Runtime Environment (build 1.7.0_55-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

$ JVM_VERSION=${jvmver%_*}

$ echo $JVM_VERSION
1.7.0

如果我运行which java

$ which java
/usr/bin/java

如果我在剧本中添加该行:

/usr/bin/java

令人沮丧的是,我过去已经开始运行,但是自从我启动服务器后,我无法启动cassandra。

所以我在这里感到困惑,Cassandra如何对我正在运行的Java版本感到困惑?我如何让cassandra运行? 1.7.0_55不是Java 7(我没有得到Java的命名约定)吗?

8 个答案:

答案 0 :(得分:7)

每个文档:http://wiki.helioviewer.org/wiki/Apache_Cassandra_Installation

  

设置JAVA_HOME

     

确保设置了JAVA_HOME:echo $ JAVA_HOME

因此请确保JAVA_HOME指向/path/to/jdk7

答案 1 :(得分:7)

尝试启动Cassandra时收到了同样的错误消息。但是我注意到我在启动Cassandra作为root时才遇到错误。当我开始使用Cassandra作为我的本地用户时,它起了作用。

事实证明,仅为本地用户配置了java:

$ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
$ sudo java -version
sudo: java: command not found

这解决了问题:

告诉系统您已安装JRE(将usr / local / java / jre1.7.0_60 / bin / java更新为当前路径):

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jre1.7.0_60/bin/java" 1

将新JRE设置为默认值:

$ sudo update-alternatives --set java /usr/local/java/jre1.7.0_60/bin/java

现在已经为root安装了java,并且可以以root身份启动Cassandra而不会显示错误消息。

答案 2 :(得分:1)

要解决此问题,我将$ JAVA_HOME环境变量更改为我从中找到的路径:

System Preferences -> Java -> java (tab in Java Control Panel) -> View -> Path

我有两个版本的java,默认的是旧版本的java。

答案 3 :(得分:1)

请参阅此CASSANDRA-11716问题。那里发布的解决方案对我有用。

答案 4 :(得分:1)

以上内容对我来说都没有用。我试图在Supervisor上运行cassandra并遇到Java错误,所以我发现我只需要在cassandra.in.sh中设置Java路径即可。我只需要设置JAVA_HOME = / usr / local / jdk1.8.0_171并保存它即可,这对我有用。

答案 5 :(得分:0)

在Linux上安装DSE 4.6时,我遇到了类似的问题。将JAVA_HOME(作为root用户)设置为安装了JRE 1.7.x的目录时,问题得以解决。

答案 6 :(得分:0)

现在似乎有一个更新的问题,即Java 7更新101已经发布。我安装了这个打破Cassandra的版本:

yum install java-1.7.0-oracle-1.7.0.99-1jpp.1.el7.x86_64

安装以前的版本(更新99)修复了问题:

{{1}}

我猜测cassandra启动脚本中的某个地方正在更新版本中为2个字符编写正则表达式,而不是3个。

答案 7 :(得分:0)

这是由Cassandra中的错误导致的:https://issues.apache.org/jira/browse/CASSANDRA-11661