我在远程服务器上安装了kafka,当我尝试运行
~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties
我收到一个错误
Unrecognized VM option 'PrintGCDateStamps'
Kafka服务器启动失败。这不是在虚拟机中运行的,而是直接在ubuntu服务器16.04上运行,并正确安装了java。有什么方法可以简单地纠正这个问题吗?
我在远程服务器上安装了kafka,当我尝试运行
~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties
我收到一个错误
Unrecognized VM option 'PrintGCDateStamps'
Kafka服务器启动失败。这不是在虚拟机中运行的,而是直接在ubuntu服务器16.04上运行,并正确安装了java。有什么方法可以简单地纠正这个问题吗?
7条答案
按热度按时间kmynzznz1#
所以我找到了答案,想把它贴出来,以防其他人有这个问题。在kafka/bin/kafka-run-class.sh的最下面有一部分
删除$kafka\u gc\u log\u opts选项。可能是一个黑客,但至少它得到了Kafkazookeeper服务器启动!
o7jaxewo2#
我正在使用java 10和kafka_2.11-0.10.1.0,我遇到了同样的问题。我在kafka-run-class.sh中没有找到java_major_版本,所以我检查了错误。它说“无法识别的vm选项'printgcdatestamps'”这意味着,java10gc相关的vm选项被更改,kafka配置与之不兼容。这也证实了我的想法。
因此,切换到java版本<9是一种解决方案,但是如果您想继续使用新的java版本,那么您可以删除指定的选项,而不是删除包含该参数的整行。我这么做了,“打印时间戳”就成了问题。我也把它去掉了。最后我得到了下面的一行:kafka\u gc\u log\u opts=“-xloggc:$log\u dir/$gc\u log\u file\u name”-verbose:gc -xx:+printgcdestails“所以这仍然会打印gc细节,但是不会指定时间戳。Zookeeper开始没有任何问题!
00jrzges3#
在安装了oraclejdk9的ubuntu16.04上也出现了同样的问题,我也尝试过openjdk1.9,但得到了相同的错误。但是当我尝试其他版本的jdk时,我发现oraclejdk8和openjdk1.8都可以。
所以,只要检查一下您使用的是什么版本的java,也许您可以通过以下方式安装或切换到其他版本的jdk:
au9on6nz4#
到目前为止,kafka的默认包在java9中有错误。最简单的解决方案是回滚到java8。
evrscar25#
@mitchell tracy,我知道这是一个有点老的线程,只是把它放在那里我的发现在同一个问题上我遇到的,如果有人遇到相同的问题。
我让jdk-9(早期访问)指向我的$java\主页,我得到了各种各样的错误本身,
Unrecognized VM option 'PrintGCDateStamps', -loggc deprecreated, -cp requires a classpath specified
,等等。用一个命令(sudo mv jdk1.8.0.jdk~/documents)把jdk-9从$javau home移到一边,然后重新启动终端,它像个魔咒一样工作!我启动了zookeeper服务器start和kafka。我希望这有帮助。
iklwldmw6#
和其他答案一样——我得到这个是为了在Java9上工作。必须进行以下更改:
编辑文件
bin/kafka-run-class.sh
在文件末尾(第248行附近)找到以下块:if [ "x$GC_LOG_ENABLED" = "xtrue" ]; then GC_LOG_FILE_NAME=$DAEMON_NAME$GC_FILE_SUFFIX KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " fi
删除2个标志:-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps
然后保存文件。Kafka应该从Java9开始
cx6n0qe37#
实际上,kafka在java的新版本中运行良好。我也遇到了同样的问题,并且在
kafka/bin/kafka-run-class.sh
脚本,其中java版本被错误地解析。此行获取的版本字符串太多:
这使得
if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]
条件无法识别正确的java版本,并添加了一些不受支持的gc选项。把上面的行改成这样就解决了我的问题:
我把这件事当作Kafka的问题来报道。问题可以在这里找到:https://issues.apache.org/jira/browse/kafka-6855
编辑:有一个已提交的修复程序:https://github.com/apache/kafka/commit/e9f86c3085fa8b65e77072389e0dd147b744f117