2017-11-06 2 views
0

smack 4.2.1을 사용하고 ejabberd 서버에 연결하려고합니다. 서버는 auth의 일반 SASL 메커니즘을 사용합니다.smack 일반 SASL to jabberd

내가 babbler와 같은 다른 라이브러리를 사용하면 인증 할 수 있습니다. 하지만 헤로인과 나는 운이 없다.

내가

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 년에는 프로젝트에 항아리를 추가해서는 안됩니다. Maven 유물을 사용할 수있는 빌드 시스템을 사용하십시오. 그렇다면 왜 마약 중 일부만 초기화되는지 궁금하지 않을 것입니다. – Flow