2017-01-05 6 views
0

私たちはOpenfire 4.1.1と連携しています。以前のsmackバージョン4.1.9と完全に連携していました。 しかし、XEP-0313(MAP)を達成するには、smackバージョン4.2.0-rc1でアップデートする必要があります。ここでSmackバージョン4.2.0-rc1 XMPPTCPConnectionConfiguration setHostAddress()throws StringIndexOutOfBoundsException

は "ここmServiceNameは、ローカルIPアドレスは、" 192.168.xxの」

InetAddress inetAddress = InetAddress.getByName(mServiceName); 

//InetAddress inetAddress = InetAddress.getLocalHost(); 

XMPPTCPConnectionConfiguration xmpptcpConnectionConfiguration = 
XMPPTCPConnectionConfiguration.builder() 
       .setXmppDomain(mServiceName) 
       .setUsernameAndPassword(mUsername, mPassword) 
       .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
       .setHostAddress(inetAddress) 
       .setPort(5222) 
       .setDebuggerEnabled(true) 
       .setSendPresence(true) 
       .setDebuggerEnabled(true) 
       .setCompressionEnabled(true) 
       .build(); 

XMPPTCPConnectionConfigurationです。

、例外、

W/System.err: java.lang.StringIndexOutOfBoundsException: length=0; index=-1 
W/System.err:  at java.lang.String.charAt(Native Method) 
W/System.err:  at org.jivesoftware.smack.util.dns.HostAddress.<init>(HostAddress.java:48) 
W/System.err:  at org.jivesoftware.smack.util.dns.HostAddress.<init>(HostAddress.java:62) 
W/System.err:  at org.jivesoftware.smack.AbstractXMPPConnection.populateHostAddresses(AbstractXMP PConnection.java:607) 
W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPC onnection.java:555) 
W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection. java:885) 
W/System.err:  at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.ja va:374) 
W/System.err:  at com.example.bosleo.chatapp.ChatConnection.connect(ChatConnection.java:141) 
W/System.err:  at com.example.bosleo.chatapp.ChatConnectionService.initConnection(ChatConnectionS ervice.java:82) 
W/System.err:  at com.example.bosleo.chatapp.ChatConnectionService.access$100(ChatConnectionServi ce.java:20) 
W/System.err:  at com.example.bosleo.chatapp.ChatConnectionService$1.run(ChatConnectionService.ja va:105) 
W/System.err:  at java.lang.Thread.run(Thread.java:818) 

HostAddressはクラスのコンストラクタに確認してください。月それはfdqnの値が ""であるからです。

public HostAddress(int port, InetAddress hostAddress) { 
    this("", port, Collections.singletonList(hostAddress)); 
} 
public HostAddress(String fqdn, int port, List<InetAddress> inetAddresses) { 

    Objects.requireNonNull(fqdn, "FQDN is null"); 
    if (port < 0 || port > 65535) 
     throw new IllegalArgumentException(
       "Port must be a 16-bit unsiged integer (i.e. between 0-65535. Port was: " + port); 
    if (fqdn.charAt(fqdn.length() - 1) == '.') { 
     this.fqdn = fqdn.substring(0, fqdn.length() - 1); 
    } 
    else { 
     this.fqdn = fqdn; 
    } 
    this.port = port; 
    if (inetAddresses.isEmpty()) { 
     throw new IllegalArgumentException("Must provide at least one InetAddress"); 
    } 
    this.inetAddresses = inetAddresses; 
} 

また、私が何か間違っている場合は、代替手段がありますか?元の質問is here

答えて

1

これは4.2.0-rc2で修正する必要があるバグです。リリースされるまで、4.2.0-rc2-SNAPSHOTを試してください。

関連する問題