Кафка непризнанный вариант виртуальной машины "PrintGCDateStamps"
Я установил Kafka на удаленном сервере, и когда я попытался запустить
~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties
И я получил ошибку
Unrecognized VM option 'PrintGCDateStamps'
И сервер Кафки не запустился. Это не запускалось в виртуальной машине, а запускалось непосредственно на Ubuntu Server 16.04 с правильно установленной Java. Как это можно просто исправить?
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.Изменение строки выше на это решило мою проблему:
Я сообщал об этом как о проблеме с Кафкой. Вопрос можно найти здесь: https://issues.apache.org/jira/browse/KAFKA-6855JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*/\1/p')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