Как решить Java: не найдено?

Я выполняю команду sudo cassandra -R начать cassandra и я получаю следующую ошибку.

getopt: invalid option -- 'R'
/usr/sbin/cassandra: 158: exec: java: not found

Это указывает на следующую строку в сценарии кассандры.

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. Сценарий cassandra обычно должен автоматически определять ваше местоположение Java на PATH, но если этого не происходит, вы можете помочь с установкой явно:

      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/

Примечание: вы должны установить JAVA_HOMEнет . переменная используется внутри сценариев запуска 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
Другие вопросы по тегам