$ 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
$ which java /usr/bin/java
如果我在脚本中添加该行:
/usr/bin/java
令人沮丧的是,我过去一直在运行它,但是由于我跳动服务器,所以无法启动cassandra。
所以我很困惑,Cassandra对我正在运行的Java版本感到困惑吗?我如何让Cassandra运行?是1.7.0_55不是Java 7(我没有获得Java的命名约定)?
1.7.0_55
尝试启动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,而不会出现错误消息。