使用aSmack为XMPP组聊天创建MUC房间时发生ClassCastException



我使用aSmack创建聊天应用程序。当我用这个aSmack创建groupchat时,它给出了错误。这是我用来创建GroupChat的代码。

MultiUserChat muc = new MultiUserChat(connection, "xyz@abc.com");           
try {
    muc.create(u_name);              
    Form form = muc.getConfigurationForm();              
    Form submitForm = form.createAnswerForm();               
    for (Iterator<FormField> fields = form.getFields(); fields.hasNext();) {
        FormField field = (FormField) fields.next();
        if (!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable() != null) {                 
            submitForm.setDefaultAnswer(field.getVariable());
        }
    }
    List<String> owners = new ArrayList<String>();
    Log.i(TAG, "list of owners=====" +owners.toString());
    owners.add(PmUser_name);
    submitForm.setAnswer("muc#roomconfig_roomowners", owners);               
    muc.sendConfigurationForm(submitForm);
} catch (XMPPException e) {          
    e.printStackTrace();
}

这是我为aSmack asmack-2010.05.07.jar使用的jar。它支持facebook xmpp, Gtalk xmpp和我自己的服务器xmpp聊天。现在我想为我自己的服务器创建群聊,但它给出了这个错误。

E/AndroidRuntime(31002): Caused by: java.lang.ClassCastException:   
org.jivesoftware.smack.packet.DefaultPacketExtension
E/AndroidRuntime(31002):    at  
org.jivesoftware.smackx.muc.MultiUserChat.getMUCUserExtension(MultiUserChat.java:2000)
E/AndroidRuntime(31002):    at    
org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:364)

我已经搜索了很多,但仍然不知道如何解决这个问题。

在我把头发拔出来之前,任何帮助都很感激。

Smack的数据包提供者未注册。您会得到ClassCastException,因为Smack无法为MUC创建正确的Packet类实例。我建议您使用较新版本的aSmack,并按照README中的说明进行操作,它应该为您初始化和注册提供程序。

最新更新