簡體   English   中英

Kafka Producer Exception NoClassDefFoundError

[英]Kafka Producer Exception NoClassDefFoundError

我對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

想法問題在哪里?

org.apache.kafka.clients.producer.Producer位於kafka-clients工件中。 你應該用

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

kafka_2.10是經紀人的工件。 如果您只是編寫生產者/消費者(除了針對測試集群對生產者/消費者進行集成測試之外),則不需要它。

如果我使用

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

我成了新的錯誤:找不到KafkaProducer Claas。

如果我使用我的Java客戶端執行此操作並創建生產者,則錯誤:

java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/KafkaProducer

我在控制台生產商和控制台消費者的服務器上測試它,它的工作原理! 但隨着java客戶端成為一個例外。 我不知道更多

這也發生在我身上。 我用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM