채팅 응용 프로그램을 만들기 위해 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");
}
}
내 로그 캣 :
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