2016-09-20 3 views
2

私はチャットのためにejabberdサーバを使用するSmack 4.1ライブラリを使ってチャットアプリケーションを開発しました。Xmpp String utilsが頻繁にアプリをクラッシュさせます

すべてのチャットは正常に動作しますが、次のエラーでアプリケーションがクラッシュすることがあります。これがなぜ頻繁に起こるのか理解できません。エラー以下

crashlyticsから取得します - コードの下

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.indexOf(int)' on a null object reference 
     at org.jxmpp.util.XmppStringUtils.parseBareJid(XmppStringUtils.java:117) 
     at org.jivesoftware.smack.roster.Roster$RosterPushListener.handleIQRequest(Roster.java:1386) 
     at org.jivesoftware.smack.AbstractXMPPConnection$2.run(AbstractXMPPConnection.java:1051) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
     at java.lang.Thread.run(Thread.java:761) 

ejabberdに接続し、ログインに使用される: -

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder(); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setServiceName(Constants.HOST); 
    config.setPort(Constants.PORT); 
    config.setHost(Constants.HOST); 
    config.setDebuggerEnabled(true); 
    config.setSendPresence(true); 
    config.setUsernameAndPassword(strUsername + "@" + Constants.HOST, strPassword); 


    SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1"); 
    SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5"); 
    SASLAuthentication.unBlacklistSASLMechanism("PLAIN"); 
    objXmpptcpConnection = new XMPPTCPConnection(config.build()); 
    objXmpptcpConnection.setUseStreamManagement(true); 
    objXmpptcpConnection.setUseStreamManagementResumption(true); 
    try { 
     objXmpptcpConnection.connect(); 
     System.out.println("Connected to===>" + objXmpptcpConnection.getHost()); 
     objXmpptcpConnection.login(); 

    } catch (XMPPException e) { 
     e.printStackTrace(); 

    } catch (SmackException e) { 
     e.printStackTrace(); 

    } catch (IOException e) { 
     e.printStackTrace(); 

    } 

私はそれを逃したか、ソリューションを提案してください任意の設定がありますこの問題を避けるには?

答えて

1

正確に何が起こっているかを見るには、コードを見る必要があります。しかしスタックトレースからは、あなたのバディリストに誰かが追加されたときのように見えます.XMPPのlibはその人のJIDをコールバックで期待しています。しかし、あなたはそれをヌルにして、クラッシュさせている。

Roster関連のXMPPを無効にして、クラッシュが継続するかどうかを確認してください。

+0

ロスタに関連する機能を使用していません.SoackのRoster機能をオフにする設定はありますか –

関連する問題