Кафка непризнанный вариант виртуальной машины "PrintGCDateStamps"



Я установил Kafka на удаленном сервере, и когда я попытался запустить



~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties


И я получил ошибку



Unrecognized VM option 'PrintGCDateStamps'


И сервер Кафки не запустился. Это не запускалось в виртуальной машине, а запускалось непосредственно на Ubuntu Server 16.04 с правильно установленной Java. Как это можно просто исправить?

612   5  

5 ответов:

Та же проблема на Ubuntu 16.04 с установленным oracle jdk 9, я также попробовал openjdk 1.9 и получил ту же ошибку. Но когда я попробовал другую версию jdk, я обнаружил, что oracle jdk 8 и openjdk 1.8 оба в порядке.

Так что просто проверьте, какую версию java вы используете, возможно, вы можете установить или переключиться на другую версию jdk:

update-alternatives --display java
update-alternatives --config java
java -version

На самом деле, Кафка прекрасно работает с новыми версиями Java. У меня была та же проблема, и я нашел ошибку в скрипте kafka/bin/kafka-run-class.sh, где версия Java была неправильно проанализирована.

Эта строка захватывает слишком много строки version:

JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p')

Это делает условие if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] неспособным идентифицировать правильную версию Java и добавляет некоторые неподдерживаемые параметры GC.

Изменение строки выше на это решило мою проблему:

JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*/\1/p')
Я сообщал об этом как о проблеме с Кафкой. Вопрос можно найти здесь: https://issues.apache.org/jira/browse/KAFKA-6855

EDIT: для этого есть зафиксированное исправление: https://github.com/apache/kafka/commit/e9f86c3085fa8b65e77072389e0dd147b744f117

На данный момент пакет Kafka по умолчанию содержит ошибки с Java 9. Самое простое решение-откатиться назад к java8.

sudo add-apt-repository ppa:webupd8team/java
sudo apt update; sudo apt install oracle-java8-installer
sudo apt install oracle-java8-set-default

Поэтому я нашел ответ и хотел опубликовать его на случай, если у кого-то еще возникнет эта проблема. В городе kafka/bin/kafka-run-class.sh в самом низу есть часть, где говорится

exec $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"

Удалите параметр $KAFKA_GC_LOG_OPTS. Может быть, это и хак, но, по крайней мере, он запускает сервер kafka zookeeper!

@Mitchell Tracy, я знаю, что это немного более старая тема, просто выложив там свои выводы по той же проблеме, с которой я столкнулся, если кто-то столкнулся с той же проблемой.

У меня был JDK-9 (ранний доступ), указывающий в моем $java_home, я получил все виды ошибок как таковых, Unrecognized VM option 'PrintGCDateStamps', -loggc deprecreated, -cp requires a classpath specified и так далее.

Убрал jdk-9 с пути из $java_home с помощью команды (sudo mv jdk1. 8. 0.jdk ~/Documents) и перезапустил терминал, он работал как заклинание! Мне удалось запустить zookeeper-server-start и Кафка. Надеюсь, это поможет.

Comments

    Ничего не найдено.