Как решить 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