线程" main"中的例外情况java.lang.NoClassDefFoundError:org / apache / qpid / proton / engine / Extendable

时间:2016-10-07 10:18:01

标签: 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.Message类型。它   是从所需的.class文件间接引用的

     

=============================================== ==========================线程中的异常" main" java.lang.NoClassDefFoundError:

     

组织/阿帕奇/ qpid /质子/发动机/可扩展

如果我错过了一些进口,有人会指出。

谢谢,

斯里莎

2 个答案:

答案 0 :(得分:0)

根据您的代码,它似乎来自官方教程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)添加到项目类路径中。 如有任何疑虑,请随时告诉我。

答案 1 :(得分:0)

有趣的是,即使使用Maven,您也会使用最新版本的SDK(0.9.0)收到此错误。回到版本0.8.2似乎是一种解决方法,或者,您只需将以下内容添加到pom.xml:

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