Вопрос или проблема
Я выполняю команду sudo cassandra -R
, чтобы запустить cassandra
, и получаю следующую ошибку.
getopt: недопустимый параметр -- 'R'
/usr/sbin/cassandra: 158: exec: java: не найден
Она указывает на следующую строку в скрипте 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)
Простое решение – установить переменную JAVA_HOME
, чтобы указать на вашу установку java. Скрипт cassandra обычно автоматически определяет местоположение вашей java в PATH
, но если это не происходит, вы можете помочь, установив JAVA_HOME
явно:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/
Примечание: вы должны установить JAVA_HOME
, а не JAVA
. Переменная JAVA
используется внутренне скриптами запуска cassandra, но вы не должны ее устанавливать. JAVA
устанавливается этим фрагментом кода в cassandra.in.sh
:
# Используйте JAVA_HOME, если установлено, в противном случае ищите java в PATH
if [ -n "$JAVA_HOME" ]; then
# Почему у нас не может быть хороших вещей: Solaris объединяет x86 и x86_64
# установки в одно дерево, используя неконвенциональный путь для
# 64-битной JVM. Поскольку мы предпочитаем 64 бита, сначала ищем альтернативный путь,
# (см. 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
Ответ или решение
Ошибка "java: not found" при запуске Cassandra указывает на то, что система не может найти исполняемый файл Java. Эта проблема может быть связана с тем, что переменная окружения JAVA_HOME
не настроена, или Java не установлена правильно. В этой статье мы подробно рассмотрим, как разрешить эту проблему и подготовить вашу среду для запуска Cassandra.
1. Проверка и установка Java
Сначала убедитесь, что Java установлена на вашем сервере. Судя по вашему выводу команды java -version
, Java присутствует, и версия соответствует требованиям (Java 1.8). Однако проблема может заключаться в том, что Java не находится в переменной среды PATH
. Проверьте, доступна ли команда java
:
which java
Если команда ничего не возвращает, это значит, что исполняемый файл Java не находится в переменной PATH
.
2. Установка JAVA_HOME
Apache Cassandra использует переменную окружения JAVA_HOME
для нахождения пути к Java. Поскольку ваш вывод команды echo $JAVA_HOME
пуст, вам нужно настроить эту переменную.
Шаги для установки JAVA_HOME:
- Определите, где установлен Java. Обычно это может быть
/usr/lib/jvm/java-1.8.0-openjdk-amd64/
. Чтобы подтвердить это, выполните:
ls /usr/lib/jvm/
- Установите переменную
JAVA_HOME
, добавив следующую строку в ваш файл конфигурации оболочки (например,~/.bashrc
или~/.bash_profile
):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/
- После того как вы добавите эту строку, обновите текущую сессию оболочки, выполняя команду:
source ~/.bashrc
3. Проверка конфигурации
Проверьте, правильно ли установлена переменная JAVA_HOME
, введя:
echo $JAVA_HOME
Этот вывод должен показать путь к вашей установке Java.
4. Примечания по запуску Cassandra
После установки JAVA_HOME
, попробуйте снова запустить Cassandra:
sudo cassandra
Если ошибка все еще сохраняется, убедитесь, что Java действительно доступен через переменную PATH
. Вы можете проверить это следующей командой:
java -version
5. Заключение
Установка правильной переменной окружения JAVA_HOME
часто решает вопрос "java: not found". Убедитесь, что вы правильно указали путь к Java в вашем окружении. Правильная настройка Java – это ключ к успешному запуску Apache Cassandra и другим Java-приложениям. Если вы следовали всем шагам и ошибка не исчезла, проверьте наличие конфликтующих установок Java или рассмотрите возможность переустановки Java.