Apache Kafka 2.12-1.1.0不能与JDK -10.0.1一起使用

时间:2018-05-24 16:06:07

标签: apache-kafka

为什么Apache Kafka 2.12-1.1.0不能与JDK 10.0.1一起使用?

./bin/zookeeper-server-start.sh config/zookeeper.properties 
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
/..../kafka_2.12-1.1.0/bin/kafka-run-class.sh: line 252: [[: 10 2018-04-17: syntax error in expression (error token is "2018-04-17")
[0.000s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:/..../kafka_2.12-1.1.0/bin/../logs/zookeeper-gc.log instead.
Unrecognized VM option 'PrintGCDateStamps'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

6 个答案:

答案 0 :(得分:6)

用下面的代码更改state确实神奇:

第251行

之前:

bin/kafka-run-class.sh

之后:

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

答案 1 :(得分:1)

您可以从文件kafka-run-class.sh

中删除java 10的有问题的日志记录选项KAFKA_GC_LOG_OPTS

KAFKA_GC_LOG_OPTS =" -Xloggc:$ LOG_DIR / $ GC_LOG_FILE_NAME -verbose:gc -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -XX:+ PrintGCTimeStamps -XX:+ UseGCLogFileRotation -XX:NumberOfGCLogFiles = 10 -XX: GCLogFileSize = 100M"

KAFKA_GC_LOG_OPTS =" -Xloggc:$ LOG_DIR / $ GC_LOG_FILE_NAME -verbose:gc -XX:+ PrintGCDetails"

答案 2 :(得分:0)

用于识别bin/kafka-run-class.sh中的java版本的正则表达式存在问题,尤其是在使用openjdk时。
您可以将line 255中的bin/kafka-run-class.sh替换为:

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

,如https://github.com/apache/kafka/blob/trunk/bin/kafka-run-class.sh#L286

答案 3 :(得分:0)

  

JAVA_MAJOR_VERSION = $($ JAVA -version 2>& 1 | sed -E -n's /.*版本   “([0-9]的)。 $ / \ 1 / P')

这行解决了我的openjdk问题!

这是您需要替换bin / kafka-run-class.sh的原始行:

  

JAVA_MAJOR_VERSION = $($ JAVA -version 2>& 1 | sed -E -n's /.*版本   “([^ .-] )。”/ \ 1 / P')

答案 4 :(得分:0)

以上所有答案都是从Shell脚本的角度来看的。如果有人在下面的Windows计算机上使用bat文件,则答案会有所帮助。

Windows Bat文件

转到$RD_GLOBALS_MYVAR并搜索..\kafka_2.12-2.2.0\bin\windows文件

转到第158行,并设置JDK路径。

kafka-run-class.bat

Shell脚本

转到IF ["%JAVA_HOME%"] EQU [""] ( set JAVA=java ) ELSE ( set JAVA="..\Java\jdk12\bin\java" ) 并搜索..\kafka_2.12-2.2.0\bin\文件。 然后搜索$ JAVA_HOME并转到此行相应地更新您的JDK路径。

kafka-run-class.sh

我认为这将解决该问题。当我们在计算机上安装了多个JDK并要进行测试时,就会发生这种情况。

答案 5 :(得分:0)

我从第 314 行

中删除了诸如 PrintGCDateStamps、UseGCLogFileRotation 之类的标签