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