我创建了一个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.Message类型。它
从所需的.class文件中间接引用
================================================== =======================线程“ main”中的异常java.lang.NoClassDefFoundError:
org / apache / qpid / proton / engine / Extendable
如果我缺少一些进口商品,有人可以指出。
谢谢,
斯里·哈莎
最佳答案
根据您的代码,它似乎来自官方教程https://azure.microsoft.com/en-us/documentation/articles/event-hubs-java-ephjava-getstarted/#send-messages-to-event-hubs。
我试图在我的Maven项目中重现您的问题,但失败了。我在pom.xml
文件中添加了Azure EventHub SDK for Java的maven依赖项,然后在没有NoClassDefFoundError
异常的情况下可以正常工作。因此,我想您可能不会使用maven来构建项目,然后需要将依赖库手动添加到eclipse项目的类路径中。
请尝试使用maven在Eclipse中构建项目,或将这些依赖项(proton-j&bcpkix-jdk15on)添加到项目类路径中。
如有任何疑问,请随时告诉我。