我一直收到以下错误消息,我无法弄清楚原因。任何帮助将不胜感激:
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);
}
答案 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?
只是想到我会发布这个问题的下一个问题。