我还是使用Smack API的新手。我在尝试登录时遇到了这个异常。
这是我的代码:
XMPPTCPConnectionConfiguration configuration = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(username, password)
.setXmppDomain(domain)
.setHostAddress(InetAddress.getByName(host))
.setPort(port)
.build();
XMPPTCPConnection connection = new XMPPTCPConnection(configuration);
connection.connect();
connection.login();
这是我的日志:
Exception in thread "main" java.lang.NullPointerException
at java.util.Collections$UnmodifiableCollection.<init>(Collections.java:1026)
at java.util.Collections$UnmodifiableSet.<init>(Collections.java:1128)
at java.util.Collections.unmodifiableSet(Collections.java:1118)
at org.jivesoftware.smack.ConnectionConfiguration.getEnabledSaslMechanisms(ConnectionConfiguration.java:476)
at org.jivesoftware.smack.SASLAuthentication.selectMechanism(SASLAuthentication.java:359)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:191)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginInternal(XMPPTCPConnection.java:385)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:491)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:448)
at Main.main(Main.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
答案 0 :(得分:1)
案件结案。起初,我只使用smack core和smack tcp作为库。事实证明,在我的情况下你需要使用smack sasl作为库。下载smack here并将smack sasl jar作为库复制到libs文件夹中。