Исключение в потоке «main» java.lang.NoClassDefFoundError: org /apache /qpid/proton/ engine / Расширяемый

#java #eclipse #azure #azure-eventhub

#java #eclipse #azure #azure-eventhub

Вопрос:

Я создал EventHub для получения некоторых случайных сообщений.

Я просто пытался узнать, могу ли я отправлять сообщения из приложения Java.

Ниже приведен код

 package com.hasher.connectedcars.sender;
import java.io.IOException;
import java.nio.charset.*;
import java.util.*;
import java.util.concurrent.ExecutionException;

import com.microsoft.azure.eventhubs.*;
import com.microsoft.azure.servicebus.*;

public class Sender {
public static void main(String[] args) throws ServiceBusException,
        ExecutionException, InterruptedException, IOException {
    try {
        final String namespaceName = "******************";
        final String eventHubName = "**************************";
        final String sasKeyName = "*******************";
        final String sasKey = "*******************";
        ConnectionStringBuilder connStr = new ConnectionStringBuilder(
                namespaceName, eventHubName, sasKeyName, sasKey);
        byte[] payloadBytes = "TEST MESSAGES"
                .getBytes("UTF-8");
        EventData sendEvent = new EventData(payloadBytes);
        EventHubClient ehClient = EventHubClient.createFromConnectionStringSync(connStr.toString());
        ehClient.sendSync(sendEvent);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
  

Я получаю приведенную ниже ошибку компиляции из eclipse в

 EventData sendEvent = new EventData(payloadBytes);
  

Тип org.apache.qpid.proton.message .Сообщение не может быть разрешено. На него
косвенно ссылаются из файлов required .class

========================================================================= Исключение в потоке «main» java.lang.Ошибка NoClassDefFoundError:

org/apache /qpid/proton/ engine / Расширяемый

Может кто-нибудь указать, не хватает ли мне какого-либо импорта.

Спасибо,

Шрихарша

Комментарии:

1. Вам не хватает класса зависимостей в пути к классу: вы должны добавить следующие четыре файла JAR из архива дистрибутива Apache Qpid JMS AMQP 1.0 в путь к классу Java при создании и запуске приложений JMS со служебной шиной: geronimo-jms_1.1_spec-1.0.jar qpid-amqp-1-0- клиент-[версия].jar qpid-amqp-1-0- клиент-jms-[версия].jar qpid-amqp-1-0- общий-[версия].jar

Ответ №1:

Согласно вашему коду, похоже, это из официального руководства https://azure.microsoft.com/en-us/documentation/articles/event-hubs-java-ephjava-getstarted/#send-messages-to-event-hubs.

Я попытался воспроизвести вашу проблему в своем проекте maven, но потерпел неудачу. Я добавил в файл зависимость maven от Azure EventHub SDK для Java pom.xml , после чего он работает нормально без NoClassDefFoundError исключений. Итак, я думаю, вы можете не использовать maven для создания своего проекта, тогда вам нужно вручную добавить библиотеки зависимостей в путь к классам вашего проекта eclipse.

Пожалуйста, попробуйте использовать maven для создания вашего проекта в Eclipse или добавьте эти зависимости (proton-j amp; bcpkix-jdk15on) в путь к классу проекта. Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.

Ответ №2:

Интересно то, что вы получаете эту ошибку с последней версией SDK (0.9.0) даже при использовании Maven. Возврат к версии 0.8.2 кажется обходным путем, или вы можете просто добавить следующее в pom.xml:

     <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>proton-j</artifactId>
        <version>0.16.0</version>
    </dependency>