当前位置: 首页 > 知识库问答 >
问题:

如何在android-8中实例化StaxXmlPullParserFactory?

毕魁
2023-03-14

当尝试在模拟器上运行简单的应用程序时,我一直收到以下错误消息,但我不知道为什么。非常感谢任何帮助:

2022-01-19 21:00:38.935 13581-13581/com。圆圈。circle_beta E/AndroidRuntime:致命异常:主进程:com。圆圈。circle_beta,PID:13581 java。util。ServiceConfigurationError:org。jivesoftware。掴xml。XmlPullParserFactory:提供者组织。jivesoftware。掴xml。斯塔克斯。无法在java上实例化StaxXmlPullParserFactory。util。ServiceLoader。在java上失败(ServiceLoader.java:233)。util。ServiceLoader。在java上访问100美元(ServiceLoader.java:183)。util。ServiceLoader$LazyIterator。java上的nextService(ServiceLoader.java:392)。util。ServiceLoader$LazyIterator。下一个(ServiceLoader.java:416)是java。util。ServiceLoader 1美元。接下来(ServiceLoader.java:494)访问org。jivesoftware。掴xml。SmackXmlParser。getXmlPullParserFactory(SmackXmlParser.java:44)位于org。jivesoftware。掴xml。SmackXmlParser。newXmlParser(SmackXmlParser.java:65)位于org。jivesoftware。掴util。包装:芸苔。getParserFor(PacketParserUtils.java:80)位于org。jivesoftware。掴SMACKINInitialization。processConfigFile(SmackInitialization.java:159)位于org。jivesoftware。掴SMACKINInitialization。processConfigFile(SmackInitialization.java:154)位于org。jivesoftware。掴SMACKINInitialization。(SmackInitialization.java:103)在org上。jivesoftware。掴掴getVersion(Smack.java:38)位于org。jivesoftware。掴掴确保在org上重新初始化(Smack.java:64)。jivesoftware。掴连接配置。(ConnectionConfiguration.java:115)位于org。jivesoftware。掴tcp。XMPPTCPConnectionConfiguration。com上的builder(XMPPTCPConnectionConfiguration.java:64)。圆圈。圈_β。xmpp。XMPPHandler。在com上连接(XMPPHandler.java:30)。圆圈。圈_β。电话号码实用性。在com上启动txmpservice(PhoneNumberActivity.java:62)。圆圈。圈_β。电话号码实用性。在com上访问400美元(PhoneNumberActivity.java:27)。圆圈。圈_β。PhoneNumberActivity 1美元。android上的onClick(PhoneNumberActivity.java:53)。看法看法performClick(View.java:7448)位于com.google.Android布料按钮材料按钮。android上的performClick(MaterialButton.java:1131)。看法看法android上的performClickInternal(View.java:7425)。看法看法在Android上获得3600美元(View.java:810)。看法查看$PerformClick。在android上运行(View.java:28305)。操作系统。汉德勒。android上的handleCallback(Handler.java:938)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:99)。操作系统。活套。android上的loop(Looper.java:223)。应用程序。活动线程。java上的main(ActivityThread.java:7656)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:592)。Android内部的操作系统。合子体。main(ZygoteInit.java:947)由以下原因引起:java。lang.NoClassDefFoundError:解析失败:Ljavax/xml/stream/XMLInputFactory;在org。jivesoftware。掴xml。斯塔克斯。StaxXmlPullParserFactory。(StaxXmlPullParserFactory.java:30)。朗,同学们。java上的newInstance(本机方法)。util。ServiceLoader$LazyIterator。java上的nextService(ServiceLoader.java:388)。util。ServiceLoader$LazyIterator。接下来(ServiceLoader.java:416)

我只是在运行以下代码:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.content.Context;
import android.util.Xml;

import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.android.AndroidSmackInitializer;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jxmpp.stringprep.XmppStringprepException;

import java.io.IOException;


public class XMPPHandler extends AppCompatActivity {
    private XMPPTCPConnection connection;
    //private XMPPTCPConnectionConfiguration config;

    public void connect() throws IOException, InterruptedException, XMPPException, SmackException {

        XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                .setXmppDomain("192.168.1.9")
                .setHost("192.168.1.9")
                .setPort(5222)
                .setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible)
                .build();
        connection = new XMPPTCPConnection(config);
        connection.connect();
    }

    //LOGIN
    public void login(String username, String password) throws XMPPException, InterruptedException, IOException, SmackException {
        if (connection!=null && connection.isConnected()) {
            connection.login(username, password);
        }

    }
}

共有1个答案

那利
2023-03-14

您的Smack依赖声明可能是错误的,因为Smack xmlparser stax没有在Android上使用(因为Android中没有stax解析器)。而是在Android中使用smack-xmlparser-xpp3,这是smack Android的一个依赖项。

 类似资料:
  • 问题内容: 我想要的只是使用一些并发Set(看起来根本不存在)。Java用于实现该行为。我想在Scala中做类似的事情,所以我创建了Scala HashMap(或Java ConcurrentHashMap)实例,并尝试添加一些元组: 当然,由于Unit是抽象的也是最终的,因此这使编译过程崩溃了。 如何使这项工作?我应该使用/ 代替吗?我必须确保没有人插入任何值。 感谢帮助 问题答案: 您可以只使

  • 问题内容: 我是编程的新手,我想知道实例化对象时哪里出错了。下面是代码: 问题答案: 您的代码中没有类。您声明的是私有方法。 使用当前代码段,您需要实例化该类并利用该方法。注意,在这种情况下,您的类定义前面有关键字 class。 但这并没有实际意义,您的方法总是会返回。 您是否正在尝试执行以下操作:

  • 问题内容: 我使用,在我的应用程序中添加了易于阅读的配置文件,并试图在该文件周围添加包装器,以简化类型转换。具体来说,我希望返回的值从提供的默认值开始“继承”它的类型。到目前为止,这是我得到的: (完整示例来源。) 不管是否从属性文件中读取返回值,from的返回值都是一个布尔值,对于字符串,整数,双精度数和&c而言,返回值都类似。当然,上面的代码片段实际上并没有编译: 我做错了吗,还是我只是试图做

  • 问题内容: 当我尝试: 编译器给我一个错误。有什么帮助吗? 另外,如果要初始化队列,是否必须实现队列的方法? 问题答案: A 是一个接口,这意味着您不能直接构造一个。 最好的办法是建立关闭一类已经实现了接口,像下面的一个:,,,,,,,,,或。 一种替代方法是编写您自己的类,该类实现必要的Queue接口。除非在极少数情况下您希望在为程序的其余部分提供的同时做一些特别的事情,否则不需要它。 更少使用

  • 问题内容: JavaScript中有一个对象。我想实例化一个用于测试目的。 我已经尝试过,但是出现“非法构造函数”错误。 是否可以创建对象? 问题答案: 根据W3C File API规范,File构造函数需要2(或3)个参数。 因此,要创建一个空文件,请执行以下操作: 第一个参数是作为文本行数组提供的数据; 第二个参数是文件名; 第三个参数如下: 它适用于FireFox,Chrome和Opera,

  • 我正在为Eclipse Juno编写一个插件,我想使用类AbstractSourceLookupDirector。当我查看API时,它说它有一个构造函数,但是当我在代码中使用以下语句时,它说“不能实例化类型AbstractSourceLookupDirector” AbstractSourceLookupDirector srclookupDir=新的AbstractSourceLookupDir