首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MessageBroker中的Nullpointerexception

MessageBroker中的Nullpointerexception
EN

Stack Overflow用户
提问于 2011-06-09 19:30:07
回答 3查看 442关注 0票数 0
代码语言:javascript
复制
while (true) {  

    Message message = consumer.receive();

    if (message != null) {
        if (message instanceof TextMessage) {
        try{
        TextMessage textMessage = (TextMessage) message;
        System.out.println("Received message '"+ textMessage.getText() + "'");
        msg.setTimestamp(System.currentTimeMillis());
        msg.setBody(textMessage.getText());
        msgBroker.routeMessageToService(msg, null);

        } catch(Exception e){
            e.printStackTrace();
        }

        } else {
        break;
        }
    }
}

在尝试运行此msgBroker.routeMessageToService(msg, null)时抛出NullPointerException

有人能给出最好的解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2011-06-09 19:48:22

msgBroker为null,或者传入msgBroker.routeMessageToService()的某个参数为null。如果没有在捕获异常时打印的堆栈跟踪,就很难判断问题出在哪里-使用它,它将准确地识别哪个变量为空,而它不应该为空。

从您的代码中可以看出,考虑到msg不能为null (否则异常可能发生得更早)的事实,可能是msgBroker为null,传递给msgBroker的null造成了破坏,或者是msgBroker.routeMessageToService()中的代码有一个bug。

代码的一个更健壮的版本是:

代码语言:javascript
复制
while (true) {  
    Message message = consumer.receive();
    //Note extra variables being checked here
    if (message != null && msg != null && msgBroker != null) {
        if (message instanceof TextMessage) {
            try{
                TextMessage textMessage = (TextMessage) message;
                System.out.println("Received message '"+ textMessage.getText() + "'");
                msg.setTimestamp(System.currentTimeMillis());
                msg.setBody(textMessage.getText());
                msgBroker.routeMessageToService(msg, null);
            } catch(Exception e){
                e.printStackTrace();
            }
        } else {
            break;
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2011-06-09 19:55:11

唯一可能的解释是您的msgBroker为空。msg显然是存在的(否则你会得到更早的错误),并且null是routeMessageToService的第二个参数的允许值。

票数 0
EN

Stack Overflow用户

发布于 2017-09-21 03:27:56

我在我的应用程序中遇到了同样的问题。空指针异常是由于messaging-config.xml中的安全约束造成的。在messaging-config.xml文件中删除了目的地的安全约束后,它对我起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6292092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档