如何解决 java: not found?

如何解决 java: not found?

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_HOMEnot JAVAJAVA变量由 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

相关内容