java - 使用 Smack 4.1 的 XMPP 客户端在登录期间给出 NullPointerException

标签 java xmpp ejabberd smack

我正在尝试使用 Smack 4.1.0-rc3 来实现连接到 ejabberd xmpp 服务器的 java xmpp 客户端。我正在使用以下代码连接到服务器。

    XMPPTCPConnectionConfiguration connConfig =    XMPPTCPConnectionConfiguration
            .builder()
            .setServiceName("example.com")
            .setHost("192.168.56.101")
            .setPort(5222)
            .setCompressionEnabled(false)
            .setSecurityMode(SecurityMode.disabled)
            .setHostnameVerifier(new HostnameVerifier() {
                public boolean verify(String arg0, SSLSession arg1) {
                    return true;
                }
            })
            .setUsernameAndPassword(user, pass).build();

    connection = new XMPPTCPConnection(connConfig);
    connection.connect();
    connection.login();

在执行“connection.login()”时,我收到以下 NullPointerException。

Exception in thread "main" java.lang.NullPointerException
at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:64)
at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:60)
at org.jivesoftware.smack.util.stringencoder.Base64.encodeToString(Base64.java:42)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:199)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:169)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:236)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginNonAnonymously(XMPPTCPConnection.java:365)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:452)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:410)
at org.org.oodlezz.unio.jabber.client.XmppClient.connect(XmppClient.java:88)
at org.org.oodlezz.unio.jabber.client.Client.main(Client.java:32)

我在代码中做错了吗?能否请您指出一个使用 Smack 4.1.0-rc3 的正确示例?

最佳答案

此页面上的其他答案有部分答案,但尝试它们后我发现真正缺少的是对 smack-java7 库的依赖。添加这个依赖会导致初始化器被调用,base64encoder 被设置,所以这个 NullPointerException 消失了。

在 Android 上,将 smack-java7 替换为 smack-android。

关于java - 使用 Smack 4.1 的 XMPP 客户端在登录期间给出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29046171/

相关文章:

java - 循环遍历集合

sockets - HTML 5 网络套接字和 XMPP 服务器对话框

java - 如何在 OpenFire API 中获取 http header

java - 无法执行操作,因为 localhost 不提供 MUC (XEP-45) 服务

mongodb - 如何使用 MongoDB 存储 ejabberd 消息?

java - 如何正确编译这2个java文件?

java - Java中的日历对象返回错误的时间?

java - 在aws实例中设置反向代理,运行tomcat服务器

ios - Openfire:用户离线时在服务器上保存消息?

ios - XMPP ejabberd SaaS 推送通知