我在使用 smack 4.2 Openfire 创建 XMPP 客户端时遇到问题

Posted

技术标签:

【中文标题】我在使用 smack 4.2 Openfire 创建 XMPP 客户端时遇到问题【英文标题】:I'm having trouble creating XMPP client using smack 4.2 Openfire 【发布时间】:2017-04-15 20:31:34 【问题描述】:

我想创建一个连接到我的 Openfire 服务器的简单 XMPP 客户端。我在运行代码时遇到了以下问题。

代码:

public void setConnection() 

    try 

        XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
        config.setUsernameAndPassword(userName,password);
        config.setResource("temp");
        config.setXmppDomain("undercrroft");

        AbstractXMPPConnection connection = new XMPPTCPConnection(config.build());
        connection.connect();
     catch (InterruptedException e) 
        e.printStackTrace();
     catch (IOException e) 
        e.printStackTrace();
     catch (SmackException e) 
        e.printStackTrace();
     catch (XMPPException e) 
        e.printStackTrace();
    

错误:

Information:java: Errors occurred while compiling module 'Messenger'
Information:javac 1.8.0_121 was used to compile java sources
Information:16/4/17 1:52 AM - Compilation completed with 2 errors and 0 warnings in 871ms
/home/paradox/Desktop/Project/Messenger/src/ConnectServer.java
Error:(28, 19) java: cannot access org.jxmpp.stringprep.XmppStringprepException
                class file for org.jxmpp.stringprep.XmppStringprepException not found
Error:(29, 19) java: cannot access org.jxmpp.jid.DomainBareJid
                class file for org.jxmpp.jid.DomainBareJid not found

这些是我的导入:

import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;

谢谢。

【问题讨论】:

查看我的回答。可能是这个帮助***.com/questions/43508083/… Class Not Found 错误表明所有依赖项都不可用,如此答案中所述:***.com/questions/30562975/… 【参考方案1】:

您缺少所需的 jxmpp 库。请查看 Smack 文档,其中列出了所有依赖项:https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide#using-eclipses-android-development-tools-adt-ant-based-build

请注意,强烈建议使用依赖管理器(Gradle、Maven、Ivy)来防止此类问题。

【讨论】:

其实我确实解决了这个问题,因为我一直在使用旧的库。谢谢。【参考方案2】:

更新库..!

这两个库是在较新的库中定义的。

【讨论】:

以上是关于我在使用 smack 4.2 Openfire 创建 XMPP 客户端时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Smack 从 android 客户端获取 openfire 在线注册用户?

Android 聊天是不是有任何 Openfire smack 替代方案?

无法通过 Smack API 使用 openfire 服务器发送/接收消息

运行 localhost openfire 和 smack 客户端库 android

如何在 Openfire 中使用 smack

Openfire:在android上使用smack向特定人广播消息