【问题标题】:Kafka Producer Exception NoClassDefFoundError卡夫卡生产者异常 NoClassDefFoundError
【发布时间】:2017-11-23 04:55:45
【问题描述】:

我对 kafka Producer 有一些问题,但我不知道如何解决它

我的 Maven 依赖项:

  <dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.10.1.1</version>
</dependency>

如果我创建:

 Producer<String, byte[]> producer = createKafkaProducer();

我变成了例外:

java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Producer
at de.dienes.opitz.node.NodesValue.onSubscriptionValue(NodesValue.java:120)
at org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaMonitoredItem.onValueArrived(OpcUaMonitoredItem.java:176)
at org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaSubscriptionManager.lambda$null$28(OpcUaSubscriptionManager.java:547)
at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:107)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.clients.producer.Producer
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 9 common frames omitted

知道问题出在哪里?

【问题讨论】:

    标签: java maven apache-kafka producer


    【解决方案1】:

    这也发生在我身上。我使用 BootStrapExtansionSchema 解决了这个问题:

    java -Xbootclasspath/a:tyrus.jar -jar MyJar.jar

    您可以添加许多由:分隔的库

    java -Xbootclasspath/a:/usr/local/kafka/libs/kafka-clien-1.0.0.jar:tyrus.jar -jar MyJar.jar

    或者你可以简单地将所有东西打包在一起,使用

    maven-assembly-plugin
    

    将此添加到您的 pom.xml:

      <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                     <executions>
                         <execution>
                             <phase>package</phase>
                             <goals>
                                 <goal>single</goal>
                             </goals>
                         </execution>
                     </executions>
                     <configuration>
                         <descriptorRefs>
                             <descriptorRef>jar-with-dependencies</descriptorRef>
                         </descriptorRefs>
                        <archive>
                             <manifest>
                                 <mainClass>pakageName.MainClassName</mainClass>
                             </manifest>
                         </archive>
                     </configuration>
                 </plugin>
    

    【讨论】:

      【解决方案2】:

      org.apache.kafka.clients.producer.Producerkafka-clients 工件中。你应该使用

      <dependency>
          <groupId>org.apache.kafka</groupId>
          <artifactId>kafka-clients</artifactId>
          <version>0.10.2.1</version>
      </dependency>
      

      kafka_2.10 是代理的工件。如果您只是编写生产者/消费者,则不需要它(除了针对测试集群对生产者/消费者进行集成测试)。

      【讨论】:

        猜你喜欢
        • 2019-04-12
        • 2017-02-21
        • 2020-08-27
        • 2019-04-09
        • 2021-01-20
        • 2019-09-24
        • 1970-01-01
        • 2020-09-30
        • 1970-01-01
        相关资源
        最近更新 更多