Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MessageBroker中的Nullpointerexception_Java_Apache Flex_Blazeds - Fatal编程技术网

Java MessageBroker中的Nullpointerexception

Java MessageBroker中的Nullpointerexception,java,apache-flex,blazeds,Java,Apache Flex,Blazeds,在试着运行这个的时候 msgBroker.routeMessageToServicemsg,null引发NullPointerException 有人能给出最佳解决方案吗?要么msgBroker为空,要么传递给msgBroker.routeMessageToService的参数之一为空。如果在捕获异常时没有打印堆栈跟踪,就很难判断问题出在哪里——通过它,它将准确地识别出哪个变量不应该为null 从您的代码中,如果msg不能为null,或者之前会发生异常,则可能是msgBroker为null,传递

在试着运行这个的时候 msgBroker.routeMessageToServicemsg,null引发NullPointerException


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

要么msgBroker为空,要么传递给msgBroker.routeMessageToService的参数之一为空。如果在捕获异常时没有打印堆栈跟踪,就很难判断问题出在哪里——通过它,它将准确地识别出哪个变量不应该为null

从您的代码中,如果msg不能为null,或者之前会发生异常,则可能是msgBroker为null,传递给msgBroker的null造成了损坏,或者msgBroker.routeMessageToService中的代码存在错误

更健壮的代码版本是:

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为NULL。msg显然是存在的,否则您可能会在前面遇到错误,并且routeMessageToService的第二个参数允许使用null值。

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

可能是因为您的msgBroker为null?在msgBroker.routeMessageToServicemsg,null;实际上,考虑到null是第二个参数允许的值,msg此时不能为null,唯一可能的解释是msgBroker本身为null;我可以知道如何获取MessageBroker值吗。
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;
        }
    }
}