2017-11-06 12 views
0

私はsmack 4.2.1を使用していて、ejabberdサーバに接続しようとしています。 サーバーはauthからのプレーンSASLメカニズムを使用します。smackプレーンSASL to jabberd

バブルのような別のライブラリを使用すると認証できます。 しかし、私は運がありません。私は

Exception in thread "main" 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:212) 
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:170) 
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:202) 
at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginInternal(XMPPTCPConnection.java:386) 
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:493) 
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:467) 

私のコード下記の例外を取得しておく

はどれ提案がappricaitedされるだろう

XMPPTCPConnectionConfiguration c = XMPPTCPConnectionConfiguration.builder().setHost("api.coredial.com") 
      .setHostAddress(InetAddress.getByName("api.coredial.com")).setDebuggerEnabled(true).setPort(5222) 

      .setXmppDomain(String.valueOf(JidCreate.bareFrom("api.coredial.com"))) 
      .setUsernameAndPassword(userName,password) 


      .setHostnameVerifier(new HostnameVerifier() { 
       public boolean verify(String s, SSLSession sslSession) { 
        return true; 
       } 
      }).build(); 


    XMPPTCPConnection con = new XMPPTCPConnection(c); 


    // Connect to the server 
    con.connect(); 
    //con.login(); 
    con.login(userName,password); 

です。

答えて

0

私はpom.xmlにsmack-java7とsmack-sals-javaxの依存関係を含めた後、この問題を解決することができました。

私は、JARファイルを追加すると静的な初期化プログラムが単純なsaslを有効にするのに必要な初期化を追加するように思えると思います。

+0

実際には、2017年にプロジェクトにjarファイルを追加しないでください。Mavenの成果物を消費するビルドシステムを使用してください。それで、なぜあなたはたんぱく質の一部だけが初期化されているのか疑問に思いません。 – Flow