Apache kafka ApacheKafka 2.12-1.1.0不使用JDK-10.0.1

Apache kafka ApacheKafka 2.12-1.1.0不使用JDK-10.0.1,apache-kafka,Apache Kafka,为什么ApacheKafka 2.12-1.1.0不能与JDK10.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, mi

为什么ApacheKafka 2.12-1.1.0不能与JDK10.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.

您可以从KAFKA-run-class.sh文件中删除有问题的日志选项KAFKA_GC_LOG_OPTS for java 10

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”

用于在
bin/KAFKA run class.sh中标识java版本的正则表达式中存在问题,尤其是在使用openjdk时。

您可以将
bin/kafka run class.sh中的
行255
替换为:

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

JAVA_MAJOR_VERSION=$($JAVA-version2>&1 | sed-E-n的/*版本 “([0-9])。$/\1/p')

这一行解决了我的openjdk问题

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

JAVA_MAJOR_VERSION=$($JAVA-version2>&1 | sed-E-n的/*版本 “([^-])。”/\1/p')


使用以下代码更改bin/kafka run class.sh
,实现了神奇的效果:

第251行

之前:

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

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

最重要的是,所有答案都是从shell脚本的角度给出的。如果有人在windows机器上使用bat文件,下面的答案将很有帮助

Windows Bat文件 转到
。\kafka_2.12-2.2.0\bin\windows
并搜索
kafka run class.bat
文件

转到第158行并设置JDK路径

IF ["%JAVA_HOME%"] EQU [""] (
    set JAVA=java
) ELSE (
    set JAVA="..\Java\jdk12\bin\java"
)
Shell脚本 转到
。\kafka_2.12-2.2.0\bin\
并搜索
kafka run class.sh
文件。 然后搜索$JAVA_HOME并转到这一行,相应地更新JDK路径

if [ -z "$JAVA_HOME" ]; then
  JAVA="java"
else
  JAVA="$JAVA_HOME\java"
fi

JAVA = "../Java/jdk12/bin/java"
echo $JAVA

我认为这将解决这个问题。当我们的机器上安装了多个JDK并且想要测试这些东西时,就会出现这种情况。

这里回答了这个问题,这应该是可以接受的答案。对我来说工作很有魅力!