私はチャットアプリケーションを作るためにaSmackとOpenfireデータベースを使用します。そして今、私はログインしようとするとNullPointerExceptionが発生したためスタックしています。誰かがこの問題を解決する手助けができますか?私は本当に何をすべきか分からない。 接続、loginUser、パスワードがnullではありません。この情報は私のlogcatからです。ログインできません、NullPointerException
AJ1 loginUser
password54パスワード
マイコード:
public void connect() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
XMPPTCPConnectionConfiguration.Builder ConnectionConfiguration = XMPPTCPConnectionConfiguration.builder();
ConnectionConfiguration.setServiceName("lucky");
ConnectionConfiguration.setHost("192.168.100.5");
ConnectionConfiguration.setPort(5222);
ConnectionConfiguration.setSecurityMode(org.jivesoftware.smack.ConnectionConfiguration.SecurityMode.disabled);
ConnectionConfiguration.setDebuggerEnabled(true);
connection = new XMPPTCPConnection(ConnectionConfiguration.build());
XMPPConnectionListener xmppConnectionListener = new XMPPConnectionListener();
connection.addConnectionListener(xmppConnectionListener);
try {
connection.connect(); //Error here
} catch (SmackException.ConnectionException e) {
// e.printStackTrace();
Log.e("Point_1","Exception " + e);
} catch (SmackException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
}
}
});
t.start();
}
public class XMPPConnectionListener implements ConnectionListener {
@Override
public void connected(XMPPConnection connection) {
if(!connection.isAuthenticated()){
login(); //Error here
Log.e("Point_login", "XMPPListener, login()");
}
connected = true;
Log.e("Point_login", "XMPPListener, connected()");
}
@Override
public void authenticated(XMPPConnection connection, boolean resumed) {
loggedin = true;
Log.e("Point_login", "XMPPListener, authenticated");
}
@Override
public void connectionClosedOnError(Exception e) {
Log.e("Point_login", "XMPPListener, connectinClosedOnError " + e);
loggedin = false;
connected = false;
isChatCreated = false;
}
@Override
public void connectionClosed() {
loggedin = false;
connected = false;
isChatCreated = false;
Log.e("Point_login", "XMPPListener, connectionClosed");
}
@Override
public void reconnectingIn(int seconds) {
loggedin = false;
Log.e("Point_login", "XMPPListener, reconnectingIn");
}
@Override
public void reconnectionFailed(Exception e) {
loggedin = false;
connected = false;
isChatCreated = false;
Log.e("Point_login", "XMPPListener, reconnectionFailed");
}
@Override
public void reconnectionSuccessful() {
loggedin = false;
connected = true;
isChatCreated = false;
Log.e("Point_login", "XMPPListener, reconnectionSuccessful");
}
}
public void login(){
try{
Log.e("Point_login", String.valueOf(connection) + " connection");
Log.e("Point_login", String.valueOf(loginUser) + " loginUser");
Log.e("Point_login", String.valueOf(password) + " password");
connection.login(loginUser,password); //Error here
}catch(SmackException.NotConnectedException e){
Log.e("Login_1","Exception");
for(int i=0;i<=5;i++){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}).start();
}
}catch(XMPPException | SmackException | IOException e){
e.printStackTrace();
Log.e("Login_1","2nd Exception");
}
}
マイlogcat:
E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-2634
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:427)
at com.lets.dothis.myapplication.XMPP.login(XMPP.java:180)
at com.lets.dothis.myapplication.XMPP$XMPPConnectionListener.connected(XMPP.java:206)
at org.jivesoftware.smack.AbstractXMPPConnection.callConnectionConnectedListener(AbstractXMPPConnection.java:1152)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:841)
at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:360)
at com.lets.dothis.myapplication.XMPP$1.run(XMPP.java:150)
at java.lang.Thread.run(Thread.java:856)
ありがとう。ログイン(接続)のような "接続" は、(loginUser、パスワード)connection.login ...、
次いでINある
ログインで
どこからconnect()を呼び出しますか? – sJy
@sjyアクティビティのonCreateメソッドから – Steve
Smackをプロジェクトにどのように追加しましたか? – sJy