2017-06-28 2 views
0

Ich bin noch neu in Smack API verwenden. Ich habe diese Ausnahme bei dem Versuch, sich anzumeldenSmack 4.2.0 NullPointerException beim Einloggen

Hier ist mein Code:.

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

Hier ist mein log:

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) 

Antwort

0

Fall geschlossen. Zuerst habe ich nur smack core und smack tcp als Bibliotheken benutzt. Es stellt sich heraus, dass Sie in meinem Fall Smack sasl als eine Bibliothek verwenden müssen. Laden Sie smack here10 herunter und kopieren Sie smack slasl jar in den libs-Ordner als Bibliothek.

+0

Ich empfehle ein Build-System (/ IDE), das Maven-Abhängigkeiten auflösen kann. Wenn Sie nur die Smack-JAR-Dateien kopieren, werden Sie sicherlich einige transitive Abhängigkeiten übersehen, die später weitere Probleme verursachen. – Flow

+0

@ Flow danke für Ihren Rat. –

+0

@Flow Ich habe das gleiche Problem. Können Sie bitte die Großbuchstabenabhängigkeit für sasl angeben. Ich habe [hier] gelesen (https://github.com/ignitorealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide), aber es gibt keine Abhängigkeit bezüglich sasl. – ADM

Verwandte Themen