sudo cassandra -R
我执行启动命令cassandra
并出现以下错误。
getopt: invalid option -- 'R'
/usr/sbin/cassandra: 158: exec: java: not found
它指向 cassandra 脚本中的以下行。
else
exec $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH"
是不是因为没有设置环境变量JAVA
?如果是,如何设置变量?
的输出echo $JAVA_HOME
为空白。这是 的输出java -version
:
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
答案1
一个简单的解决方案是设置JAVA_HOME
变量以指向您的 java 安装。cassandra 脚本通常应该自动检测 上的 java 位置PATH
,但如果没有发生,您可以通过JAVA_HOME
明确设置来帮助:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/
注意:您必须设置JAVA_HOME
not JAVA
。JAVA
变量由 cassandra 启动脚本内部使用,但您不应该设置它。JAVA
由以下代码片段设置cassandra.in.sh
:
# Use JAVA_HOME if set, otherwise look for java in PATH
if [ -n "$JAVA_HOME" ]; then
# Why we can't have nice things: Solaris combines x86 and x86_64
# installations in the same tree, using an unconventional path for the
# 64bit JVM. Since we prefer 64bit, search the alternate path first,
# (see https://issues.apache.org/jira/browse/CASSANDRA-4638).
for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do
if [ -x "$java" ]; then
JAVA="$java"
break
fi
done
else
JAVA=`command -v java 2> /dev/null`
fi