小编典典

我安装了Java 7后,cassandra 2抱怨Java 7

java

$ 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的命名约定)?


阅读 239

收藏
2020-11-26

共1个答案

小编典典

尝试启动Cassandra时出现相同的错误消息。但是我通知我,只有在以root用户身份启动Cassandra时才出现错误。当我以本地用户身份启动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,而不会出现错误消息。

2020-11-26