Kafka 无法解析 java12 的 javax/xml/bind/* ClassNotFoundException?

问题描述 投票:0回答:3

我正在学习 kafka,刚刚下载了 kafka 0.10.1(因为这是我项目的要求),每当我运行此命令行代码时

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

我收到此错误

java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    at kafka.utils.CoreUtils$.urlSafeBase64EncodeNoPadding(CoreUtils.scala:298)
    at kafka.utils.CoreUtils$.generateUuidAsBase64(CoreUtils.scala:286)
    at kafka.server.KafkaServer$$anonfun$getOrGenerateClusterId$1.apply(KafkaServer.scala:336)
    at kafka.server.KafkaServer$$anonfun$getOrGenerateClusterId$1.apply(KafkaServer.scala:336)
    at scala.Option.getOrElse(Option.scala:121)
    at kafka.server.KafkaServer.getOrGenerateClusterId(KafkaServer.scala:336)
    at kafka.server.KafkaServer.startup(KafkaServer.scala:203)
    at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39)
    at kafka.Kafka$.main(Kafka.scala:67)
    at kafka.Kafka.main(Kafka.scala)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 10 more

我实际上使用的是java 12,而

javax/xml/bind/*
已从java 11中删除,因此一些建议是在pom.xml文件中添加依赖项,但我从.tar文件中解压缩了kafka,而不是使用maven构建它,所以我怎么能在kafka中解决这个错误??

我应该为此下载 java-8 吗?

java java-8 apache-kafka java-12
3个回答
1
投票

我正在学习kafka,刚刚下载了kafka 0.10.1

该版本的Kafka不支持Java 8以上版本。

仅最新的 Kafka 2.2.0(很可能对于您的学习目的来说效果相同)添加了对 Java 11 的支持


0
投票

这个

javax/xml/bind
API 从 Java 11 开始就被删除了。您可以参考 如何解决 Java 9 中的 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 的解决方法


0
投票

我使用的是JDK10。为此,我添加了如下内容以使其适合我。 1)编辑kafka-run-class.bat 2) set COMMAND=%JAVA% –add-modules java.xml.bind 其余行保持不变。 3)运行kafka服务器

© www.soinside.com 2019 - 2024. All rights reserved.