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
。
谁能给予最佳解决方案?
3条答案
按热度按时间2mbi3lxu1#
msgBroker为null,或者传递给msgBroker.routeMessageToService()的某个参数为。如果在捕获异常时不打印堆栈跟踪,则很难判断问题出在哪里-使用堆栈跟踪,它将在不应该为null的时候准确地识别哪个变量为null。
从您的代码来看,鉴于msg不能为空(否则异常会在更早的时候发生),可能是msgBroker为空,传递给msgBroker的空值造成了损害,或者是msgBroker.routeMessageToService()中的代码有错误。
更可靠的代码版本是:
ilmyapht2#
唯一可能的解释是您的msgBroker为NULL。msg显然存在(否则您会更早地收到错误),并且null是routeMessageToService的第二个参数所允许的值。
zysjyyx43#
我在我的应用程序中遇到了同样的问题。空指针异常是由于messaging-config.xml中的安全约束引起的。在messaging-config.xml文件中删除目标的安全约束后,它对我起作用了。