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