$ 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会对我运行的Java版本感到困惑呢?我怎么让卡桑德拉跑?1.7.0_55不是Java 7(我不知道Java的命名约定)吗?
发布于 2014-06-25 07:33:54
我在试图启动卡桑德拉时收到了同样的错误信息。但我通知说,只有当启动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现在,java是为root安装的,Cassandra可以在没有错误消息的情况下作为root启动。
发布于 2014-06-12 17:08:59
每个文档:安装
集JAVA_HOME 确保设置了JAVA_HOME :回波$JAVA_HOME
所以,确保JAVA_HOME指向/path/to/jdk7
发布于 2015-09-30 07:18:44
为了解决这个问题,我将$JAVA_HOME环境变量更改为我从以下位置找到的路径:
System Preferences -> Java -> java (tab in Java Control Panel) -> View -> Path我有两个版本的java,默认的一个是java的旧版本。
https://stackoverflow.com/questions/24190063
复制相似问题