Apache kafka ApacheKafka 2.12-1.1.0不使用JDK-10.0.1
为什么ApacheKafka 2.12-1.1.0不能与JDK10.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
./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并且想要测试这些东西时,就会出现这种情况。这里回答了这个问题,这应该是可以接受的答案。对我来说工作很有魅力!