使用 aSmack 为 XMPP 群聊创建 MUC 房间时出现 ClassCastException

Posted

技术标签:

【中文标题】使用 aSmack 为 XMPP 群聊创建 MUC 房间时出现 ClassCastException【英文标题】:ClassCastException when creating MUC room for XMPP group chat using aSmack 【发布时间】:2013-04-02 11:32:02 【问题描述】:

我正在使用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 的罐子。它支持 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)

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

在我拔掉头发之前,我们将不胜感激。

【问题讨论】:

我被困在使用 xmpp 创建群聊中。你能发布你如何创建聊天室和群聊的代码吗? 【参考方案1】:

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

【讨论】:

现在我可以创建房间,但是无法在该域的可用 HostedRomms 列表中看到。我必须为此做些什么。 如果您首先支持帮助您解决问题的答案并将其标记为已接受,那将是礼貌的。另外请不要在这里提出不同的问题,而是创建一个新问题。 Sorry Flow,我被接受并赞成您的回答,它对我有帮助,指导如何现在解决我的问题或提供我将尝试解决的任何链接。请。 hai,你能帮我解决这个 MultiUserChat。我无法理解如何解决这个问题。***.com/questions/15831855/…

以上是关于使用 aSmack 为 XMPP 群聊创建 MUC 房间时出现 ClassCastException的主要内容,如果未能解决你的问题,请参考以下文章

即使与 XMPP 服务器断开连接,如何保持群聊室(MUC)一直存在?

使用 XMPP 框架将文件发送到 MUC 房间

使用 XMPP 在群聊中传输文件

XMPP MUC问题

如何使用 python xmpppy 在 gtalk 中创建 MUC

无需登录 XMPP MUC