为什么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.
答案 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文件,则答案会有所帮助。
转到$RD_GLOBALS_MYVAR
并搜索..\kafka_2.12-2.2.0\bin\windows
文件
转到第158行,并设置JDK路径。
kafka-run-class.bat
转到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 之类的标签