#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>