我正在尝试使用初始化脚本将 cassandra 作为服务运行,但我不断收到错误“Cassandra 2.0 及更高版本需要 Java 7u25 或更高版本。”
在初始化脚本中,我在 cassandra 用户下运行 cassandra:
#!/bin/bash
# init script for Cassandra.
# chkconfig: 2345 90 10
# description: Cassandra
. /etc/rc.d/init.d/functions
CASS_HOME=/etc/cassandra
CASS_BIN=$CASS_HOME/bin/cassandra
CASS_LOG=/var/log/cassandra/cassandra.out
CASS_USER="cassandra"
CASS_PID=/var/run/cassandra/cassandra.pid
prog=Cassandra
RETVAL=0
start() {
if [ -f $CASS_PID ] && checkpid `cat $CASS_PID`; then
echo "Cassandra is already running."
exit 0
fi
echo -n $"Starting $prog: "
daemon --user $CASS_USER $CASS_BIN -p $CASS_PID >> $CASS_LOG 2>&1
usleep 500000
RETVAL=$?
if [ "$RETVAL" = "0" ]; then
echo_success
else
echo_failure
fi
echo
return $RETVAL
}
cassandra 用户肯定在运行 8u60:
> sudo runuser -l cassandra -c 'echo $JAVA_HOME'
/usr/java/jdk1.8.0_60
> sudo runuser -l cassandra -c 'java -version'
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
我修改了 cassandra-env.sh 脚本以打印出带有错误的用户和 java 版本,他们确认该脚本看到的是旧版本的 java,但我不确定当它看起来不错时这怎么可能对于 cassandra 用户。
Cassandra 2.0 and later require Java 7u25 or later.
Found JVM 1.6.0, patch 38, current user cassandra.
感谢任何帮助!
最佳答案
它实际上并没有作为 cassandra
用户运行,只是在它的 uid
下运行。环境不同并且不包含正确的 Java 版本。检查 java 版本为 root
,它将指向 Java 6 JRE。
关于java - Cassandra 2.0 及更高版本需要 Java 7u25 或更高版本,但我使用的是 8u60,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618006/