Java 卡夫卡:无法创建嵌入式卡夫卡服务器

Java 卡夫卡:无法创建嵌入式卡夫卡服务器,java,apache-kafka,Java,Apache Kafka,更新: 下面是我试图遵循的示例代码 它应该与kafka 0.10.x配合使用 我正在尝试创建一个嵌入式kafka服务器作为 EmbeddedZookeeper zkServer = new EmbeddedZookeeper(); String zkConnect = ZKHOST + ":" + zkServer.port(); ZkClient zkClient = new ZkClient(zkConnect, 30000, 30000,

更新:

下面是我试图遵循的示例代码

它应该与kafka 0.10.x配合使用

我正在尝试创建一个嵌入式kafka服务器作为

        EmbeddedZookeeper zkServer = new EmbeddedZookeeper();
        String zkConnect = ZKHOST + ":" + zkServer.port();
        ZkClient zkClient = new ZkClient(zkConnect, 30000, 30000, ZKStringSerializer$.MODULE$);
        ZkUtils zkUtils = ZkUtils.apply(zkClient, false);

        // setup Broker
        Properties brokerProps = new Properties();
        brokerProps.setProperty("zookeeper.connect", zkConnect);
        brokerProps.setProperty("broker.id", "0");
        brokerProps.setProperty("log.dirs", Files.createTempDirectory("kafka-").toAbsolutePath().toString());
        brokerProps.setProperty("listeners", "PLAINTEXT://:" + BROKERPORT);
        brokerProps.setProperty("advertised.listeners", "PLAINTEXT://" + BROKERHOST +":" + BROKERPORT);
        //brokerProps.setProperty("security.inter.broker.protocol","PLAINTEXT");
        KafkaConfig config = new KafkaConfig(brokerProps);
        Time mock = new MockTime();
        KafkaServer kafkaServer = TestUtils.createServer(config, mock);
        logger.info("TestKafkaServer created");
但我明白了

java.lang.NoSuchFieldError: DEFAULT_SASL_ENABLED_MECHANISMS
    at kafka.server.Defaults$.<init>(KafkaConfig.scala:183)
    at kafka.server.Defaults$.<clinit>(KafkaConfig.scala)
    at kafka.log.Defaults$.<init>(LogConfig.scala:35)
    at kafka.log.Defaults$.<clinit>(LogConfig.scala)
    at kafka.log.LogConfig$.<init>(LogConfig.scala:246)
    at kafka.log.LogConfig$.<clinit>(LogConfig.scala)
    at kafka.server.KafkaConfig$.<init>(KafkaConfig.scala:270)
    at kafka.server.KafkaConfig$.<clinit>(KafkaConfig.scala)
    at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:795)
    at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:797)
    at com.ibm.whi.bap.helper.test.kafka.KafkaServerTest.<init>(KafkaServerTest.java:56)
    at com.ibm.whi.bap.helper.test.kafka.KafkaTest.checkAllProperties(KafkaTest.java:115)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

java.lang.NullPointerException
    at com.ibm.whi.bap.helper.test.kafka.KafkaTest.tearDown(KafkaTest.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37)
    at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
我做错了什么?我试着和他一起玩

brokerProps.setProperty("security.inter.broker.protocol","PLAINTEXT");
但什么都没用。我只想为单元测试创建一个嵌入式kafka服务器。我根本不想设置任何安全措施

这是我的马文

        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.10.1.0</version>
            <classifier>test</classifier>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>0.10.1.0</version>
            <classifier>test</classifier>
            <scope>test</scope>
        </dependency>

org.apache.kafka
卡夫卡客户
0.10.1.0
测试
测试
org.apache.kafka
卡夫卡2.11
0.10.1.0
测试
测试

这不是代码问题。这是版本不匹配。您正在使用的库()是根据Kafka 0.10.0.0编译的,这与您正在使用的Kafka版本()不同。这就是为什么它无法找到字段DEFAULT\u SASL\u ENABLED\u mechanism。您可能需要查看以下链接:-


您可以将这些复制到java类到您的项目源代码中,或者您可以修改一些细节(例如删除模式注册表)。这将比依赖某些库(正如您当前所依赖的)更简单,只需创建内存中的kafka集群。毕竟这只是几行代码。希望这有帮助。

这不是代码问题。这是版本不匹配。您正在使用的库()是根据Kafka 0.10.0.0编译的,这与您正在使用的Kafka版本()不同。这就是为什么它无法找到字段DEFAULT\u SASL\u ENABLED\u mechanism。您可能需要查看以下链接:-



您可以将这些复制到java类到您的项目源代码中,或者您可以修改一些细节(例如删除模式注册表)。这将比依赖某些库(正如您当前所依赖的)更简单,只需创建内存中的kafka集群。毕竟这只是几行代码。希望这能有所帮助。

也许是因为卡夫卡不喜欢阿森纳球迷。JK。你可以试试HDP的沙箱,它本机部署了zookeeper和代理。唯一的问题是开放端口(因为它是一个码头工人)。哈哈,没问题!我也不是卡夫卡的粉丝:问题是我需要嵌入式zookeeper,因为我有一些单元测试。我不需要这些测试之外的卡夫卡服务器。我知道上面的代码曾经适用于卡夫卡0.8,我想可能是o.9,但现在它不适用于0.10。我猜ti与未设置的某些代理属性有关。有什么想法吗?哦,在0.8和0.10之间有很多变化。例如,消费者现在直接连接到经纪人。再次阅读您的代码,我认为您缺少Scala软件包,您是否尝试添加该依赖项?不,我没有,那是什么依赖项?请查看我发布的更新,因为卡夫卡不喜欢阿森纳球迷。JK。你可以试试HDP的沙箱,它本机部署了zookeeper和代理。唯一的问题是开放端口(因为它是一个码头工人)。哈哈,没问题!我也不是卡夫卡的粉丝:问题是我需要嵌入式zookeeper,因为我有一些单元测试。我不需要这些测试之外的卡夫卡服务器。我知道上面的代码曾经适用于卡夫卡0.8,我想可能是o.9,但现在它不适用于0.10。我猜ti与未设置的某些代理属性有关。有什么想法吗?哦,在0.8和0.10之间有很多变化。例如,消费者现在直接连接到经纪人。再次阅读您的代码,我认为您缺少Scala包,您是否尝试添加该依赖项?不,我没有,那是什么依赖项?请查看我发布的更新谢谢!我在kafka更新为0.10.1.0的情况下尝试了上述方法,但仍然得到
java.lang.NoSuchFieldError:DEFAULT\u SASL\u ENABLED\u MECHANISMS
at
effectiveConfig.put(kafkanconfig$.MODULE$.BrokerIdProp(),0)使用或使用confluent解决方案?使用confluent得到的此错误。我试着使用嵌入的zookeeper启动很好我甚至没有添加任何属性,只是试着使用defautsthanks!我在kafka更新为0.10.1.0的情况下尝试了上述方法,但仍然得到
java.lang.NoSuchFieldError:DEFAULT\u SASL\u ENABLED\u MECHANISMS
at
effectiveConfig.put(kafkanconfig$.MODULE$.BrokerIdProp(),0)使用或使用confluent解决方案?使用confluent得到的此错误。我试着使用嵌入的zookeeper启动很好我甚至没有添加任何属性,只是试着使用defauts
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.10.1.0</version>
            <classifier>test</classifier>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>0.10.1.0</version>
            <classifier>test</classifier>
            <scope>test</scope>
        </dependency>