Kafka无法为Java 12解析javax / xml / bind / * ClassNotFoundExeption?

时间:2019-04-05 08:57:33

标签: java java-8 apache-kafka java-12

我正在学习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,并且从Java 11中删除了javax/xml/bind/*,所以有些建议是在pom.xml文件中添加依赖项,但是我从.tar文件中解压缩了kafka,而不是使用maven构建它那么我该如何解决kafka中的此错误?

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

3 个答案:

答案 0 :(得分:1)

  

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

此版本的Kafka不支持高于8的Java版本。

仅最新的Kafka 2.2.0(很可能会为您的学习目的而工作),增加了对Java 11的支持

答案 1 :(得分:0)

从Java 11开始,此javax/xml/bind API已被删除。您可以参考How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9了解解决方法

答案 2 :(得分:0)

我正在使用JDK10。为此,我添加了以下内容以使其对我有效。 1)编辑kafka-run-class.bat 2)设置COMMAND =%JAVA% –add-modules java.xml.bind 其余各行保持不变。 3)运行kafka服务器