2016-05-01 37 views
1

我在遠程服務器上安裝了卡夫卡,當我試圖運行卡夫卡無法識別的VM選項「PrintGCDateStamps」

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

而且我收到了一條錯誤

Unrecognized VM option 'PrintGCDateStamps' 

而卡夫卡服務器無法啓動。這並沒有在vm中運行,而是直接在Ubuntu Server 16.04上運行,並正確安裝了Java。任何方式可以簡單地糾正?

+0

JDK 9中的GC日誌記錄已更改。作爲此工作的一部分已刪除的舊式XX標誌的列表在JDK 9發行說明中進行了介紹,請訪問:http://www.oracle.com/technetwork /java/javase/9​​-notes-3745703.html#JDK-8145092 –

回答

4

同樣的問題在Ubuntu 16.04上安裝了oracle jdk 9,我也嘗試了openjdk 1.9並得到了同樣的錯誤。但是當我嘗試其他版本的jdk時,我發現oracle jdk 8和openjdk 1.8都可以。

所以只是檢查出你使用的,也許你可以安裝或切換到JDK的另一個版本是什麼版本的Java:

update-alternatives --display java 
update-alternatives --config java 
java -version 
+0

刪除我的回答贊成這一個。謝謝! –

0

所以我找到了答案,並希望發佈它,以防其他人有這個問題。在最底部的卡夫卡/斌/ 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 "[email protected]" 

刪除$ KAFKA_GC_LOG_OPTS選項。可能是黑客攻擊,但至少它會啓動kafka zookeeper服務器!

+1

您應該不要刪除$ KAFKA_GC_LOG_OPTS變量,而是找出它的設置位置,然後在那裏更改值。 PrintGCDateStamps可能來自比您安裝的更新版本的Java,但您可能希望啓用某種形式的GC日誌記錄。運行'java -XX:+ PrintFlagsFinal'來查看你特定版本的Java可以理解的所有標誌。 – AlBlue

+0

非常感謝你! –

0

@Mitchell特雷西,我知道這是一個年紀大一點的線程,如果有人遇到同樣的問題,就把我的發現放在那裏,就是我遇到的同一問題。

我有jdk-9(Early Access)指向我的$ java_home,我有各種錯誤本身,Unrecognized VM option 'PrintGCDateStamps', -loggc deprecreated, -cp requires a classpath specified等等。

使用命令(sudo mv jdk1.8.0.jdk〜/ Documents)將$ jdk-9從$ java_home中移出並重新啓動終端,它的工作方式就像一個魅力!我能夠啓動zookeeper-server-start和kafka。 我希望這可以幫助。

+0

現在對於我來說,JDK 9發行版本也是如此。你是否在卡夫卡等創建了一個問題? – Dmitriy

0

截至目前,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