无法使用SMACK API从Packet转换为Message

时间:2011-07-05 17:13:39

标签: smack

我遇到一个奇怪的问题,即无法将数据包转换为消息。我在这一行收到错误:Message msg = (Message) arg0;它说

  

“无法从数据包转换为消息”

//代码

     connection.connect();
     connection.login(uN, pw);

    PacketTypeFilter filter = new PacketTypeFilter(Message.class);
    PacketCollector myCollector = connection.createPacketCollector(filter);
    PacketListener myListener = new PacketListener(){

            @Override
            public void processPacket(Packet arg0) {
                // TODO Auto-generated method stub
                if(arg0 instanceof org.jivesoftware.smack.packet.Message){
                        Message msg = (Message) arg0;
                        }
                    }

                };
    connection.addPacketListener(myListener, filter);

1 个答案:

答案 0 :(得分:2)

我要猜测,因为你在支持instanceof的情况下完全限定了Message,但是在你的演员阵容中没有,所以你的演员阵容中使用的Message不是正确的Message类。

检查您的导入,看看您有哪些消息,它可能不是 org.jivesoftware.smack.packet.Message