首页 > 解决方案 > openfire ReconnectionManager java.lang.IllegalStateException

问题描述

我在 android 中使用 Openfire aSmack 库,但是 ReconnectionManager.java 总是得到这样的异常并且在我自己的文件中找不到特定的代码行。那么我该怎么做才能避免这个异常呢?

java.lang.IllegalStateException: 
  at org.jivesoftware.smack.XMPPConnection.login (XMPPConnection.java:217)
  at org.jivesoftware.smack.XMPPConnection.connect (XMPPConnection.java:1010)
  at org.jivesoftware.smack.ReconnectionManager$2.run (ReconnectionManager.java:122)
java.lang.NullPointerException: 
  at org.jivesoftware.smack.XMPPConnection.initConnection (XMPPConnection.java:617)
  at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration (XMPPConnection.java:570)
  at org.jivesoftware.smack.XMPPConnection.connect (XMPPConnection.java:999)
  at org.jivesoftware.smack.ReconnectionManager$2.run (ReconnectionManager.java:122)
java.lang.IllegalThreadStateException: 
  at java.lang.Thread.start (Thread.java:868)
  at org.jivesoftware.smack.PacketWriter.startup (PacketWriter.java:119)
  at org.jivesoftware.smack.XMPPConnection.initConnection (XMPPConnection.java:608)
  at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration (XMPPConnection.java:570)
  at org.jivesoftware.smack.XMPPConnection.connect (XMPPConnection.java:999)
  at org.jivesoftware.smack.ReconnectionManager$2.run (ReconnectionManager.java:122)

java.lang.IllegalStateException: 
  at org.jivesoftware.smack.XMPPConnection.sendPacket (XMPPConnection.java:488)
  at org.jivesoftware.smack.NonSASLAuthentication.authenticate (NonSASLAuthentication.java:69)
  at org.jivesoftware.smack.SASLAuthentication.authenticate (SASLAuthentication.java:363)
  at org.jivesoftware.smack.XMPPConnection.login (XMPPConnection.java:230)
  at org.jivesoftware.smack.XMPPConnection.connect (XMPPConnection.java:1010)
  at org.jivesoftware.smack.ReconnectionManager$2.run (ReconnectionManager.java:122)
java.lang.IllegalThreadStateException: 
  at java.lang.Thread.start (Thread.java:868)
  at org.jivesoftware.smack.PacketReader.startup (PacketReader.java:103)
  at org.jivesoftware.smack.XMPPConnection.initConnection (XMPPConnection.java:611)
  at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration (XMPPConnection.java:570)
  at org.jivesoftware.smack.XMPPConnection.connect (XMPPConnection.java:999)
  at org.jivesoftware.smack.ReconnectionManager$2.run (ReconnectionManager.java:122)

java.lang.IllegalThreadStateException: 
  at java.lang.Thread.start (Thread.java:868)
  at org.jivesoftware.smack.PacketWriter.startKeepAliveProcess (PacketWriter.java:137)
  at org.jivesoftware.smack.XMPPConnection.initConnection (XMPPConnection.java:617)
  at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration (XMPPConnection.java:570)
  at org.jivesoftware.smack.XMPPConnection.connect (XMPPConnection.java:999)
  at org.jivesoftware.smack.ReconnectionManager$2.run (ReconnectionManager.java:122)

这是我的代码:

static{
        try{
            Class.forName("org.jivesoftware.smack.ReconnectionManager");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

connConfig.setReconnectionAllowed(true);
connConfig.setSASLAuthenticationEnabled(true);

标签: androidxmppopenfire

解决方案


推荐阅读