使用Smack 4.1的XMPP客户端在登录期间给出NullPointerException [英] XMPP client using Smack 4.1 giving NullPointerException during login

查看:152
本文介绍了使用Smack 4.1的XMPP客户端在登录期间给出NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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。

  org.jivesoftware.smack.util.stringencoder中线程main的异常java.lang.NullPointerException 
。 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)
org.org.oodlezz.unio.ja bber.client.Client.main(Client.java:32)

我做错了什么码?你能否指点一下使用Smack 4.1.0-rc3的正确例子?

解决方案

此页面上的其他答案有部分答案,但尝试他们我弄清楚真正缺少的是对smack-java7库的依赖。添加此依赖项会导致调用初始化程序,设置base64encoder,因此NullPointerException消失。



在Android上,用smack-android替换smack-java7。 / p>

I am trying to use Smack 4.1.0-rc3 for implementing a java xmpp client which connects to a ejabberd xmpp server. I am using the following code for connecting to the server.

    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();

While executing the 'connection.login()' i am getting the following 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)

Am I doing something wrong in the code? Can you please point me towards a proper example for using Smack 4.1.0-rc3?

解决方案

The other answers on this page have parts of the answer, but trying them I figured out what is really missing is the dependency on smack-java7 library. Adding this dependency causes the initializers to be called, the base64encoder to be set, and so this NullPointerException disappears.

On Android, replace smack-java7 with smack-android.

这篇关于使用Smack 4.1的XMPP客户端在登录期间给出NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆