Android SmackInitialization:org.xmlpull.v1.XmlPullParserFactory.newInstance错误

时间:2017-10-22 03:55:38

标签: android xmpp smack xmlpullparser

我一直收到以下错误消息,我无法弄清楚原因。任何帮助将不胜感激:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
    at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
    at com.parental.control.XmppClient.connect(XmppClient.java:32)
    at com.parental.control.XmppClient.main(XmppClient.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.IllegalStateException: java.lang.RuntimeException: Stub!
    at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:119)
    ... 9 more
Caused by: java.lang.RuntimeException: Stub!
    at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:16)
    at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:153)
    at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148)
    at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116)
    ... 9 more

只需运行以下代码:

private void connect() throws InterruptedException, IOException, XMPPException, SmackException {
    XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder().setServiceName(hostName).setHost(<openFireServerHost).setPort(5222).setUsernameAndPassword(userName, password).setCompressionEnabled(false).build();
    XMPPTCPConnection connection = new XMPPTCPConnection(conf);
}

2 个答案:

答案 0 :(得分:1)

您已使用android库存根编译了您的应用程序,请阅读docs

  

默认情况下,Gradle的Android插件针对 android.jar库的修改版本执行本地单元测试,该库不包含任何实际代码。相反,从单元测试中调用Android类的方法会引发异常。这是为了确保您只测试您的代码,而不依赖于Android平台的任何特定行为(您没有明确嘲笑)。

因此,您的构建环境未正确配置,无法为设备/模拟器构建真正的Android应用程序

答案 1 :(得分:0)

所以。 。 。这实际上是一个XMLPullParser错误,它与Smack库无关。我花了整个周末来查看代码并弄清楚这一点,但问题是我试图连接到我的Open Fire服务器而不使用我的Android模拟器。

下面的Stack Overflow帖子帮我解决了问题:how to instantiate an XmlPullParser in android-8?

只是想到我会发布这个问题的下一个问题。