$ cassandra
Cassandra 2.0 and later require Java 7 or later.
Run Code Online (Sandbox Code Playgroud)
好的,在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
Run Code Online (Sandbox Code Playgroud)
嗯,如果我在命令行获得版本:
$ 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
Run Code Online (Sandbox Code Playgroud)
如果我跑which java:
$ which java
/usr/bin/java
Run Code Online (Sandbox Code Playgroud)
如果我在脚本中放入该行:
/usr/bin/java
Run Code Online (Sandbox Code Playgroud)
这里令人沮丧的部分是我在过去运行,但自从我弹回服务器后,我就无法启动cassandra.
所以我在这里很困惑,Cassandra对我正在运行的Java版本感到困惑?我如何让cassandra运行?是1.7.0_55不是Java 7(我不明白Java的命名约定)?
每个文档:http://wiki.helioviewer.org/wiki/Apache_Cassandra_Installation
设置JAVA_HOME
确保设置了JAVA_HOME:echo $ JAVA_HOME
所以一定JAVA_HOME要指向/path/to/jdk7
尝试启动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
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题:
告诉系统您已安装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
Run Code Online (Sandbox Code Playgroud)
将新JRE设置为默认值:
$ sudo update-alternatives --set java /usr/local/java/jre1.7.0_60/bin/java
Run Code Online (Sandbox Code Playgroud)
现在为root安装了java,并且可以以root身份启动Cassandra而不会显示错误消息.
| 归档时间: |
|
| 查看次数: |
9162 次 |
| 最近记录: |