NoSuchMethod:org.codehaus.stax2.ri.EmptyIterator.getInstance()Ljava/util/Iterator;

NoSuchMethod:org.codehaus.stax2.ri.EmptyIterator.getInstance()Ljava/util/Iterator;

没有直接使用stax2-api的jar包,是通过maven依赖管理引入的,执行如下代码时抛出如上异常:

interface MyApi {
	@GET("aaa/bbb/ccc")
	Call<Ccc> getCcc();
}

MyApi myApi;
		try {
		    // initialize OkHttpClient
			OkHttpClient client = ......;
			
			Retrofit retrofit = new Retrofit.Builder().baseUrl("https://" + ip)
					.addConverterFactory(SimpleXmlConverterFactory.create()).client(client).build();

			myApi= retrofit.create(MyApi .class);

			if (myApi.getCcc().execute().isSuccessful())
				.....

在执行myApi.getCcc().execute()时抛出如上异常。
通过堆栈可以看到调用情况如下:

public final class DataUtil {
    ......
    public static <T> Iterator<T> emptyIterator() {
        return EmptyIterator.getInstance();
    }
    ......
}

public final class EmptyIterator implements Iterator<Object> {
    static final EmptyIterator sInstance = new EmptyIterator();

    private EmptyIterator() {
    }

    public static EmptyIterator  getInstance() {
        return sInstance;
    }
    ......
}

可以看到应该是代码不匹配,要求的返回是 Iterator,实际返回的是EmptyIterator

查找maven库发现EmptyIterator是在stax2-api中定义的,有两个版本:3.1.4和 4.1,3.1.4版本实现如上,4.1版本实现如下:

public final class EmptyIterator implements Iterator<Object> {
    static final Iterator<?> sInstance = new EmptyIterator();

    private EmptyIterator() {
    }

    public static <T> Iterator<T> getInstance() {
        return sInstance;
    }
    ......
}

由此可以判断是stax-api版本不匹配的问题,在maven中配置依赖4.1版本问题解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,报错信息是"java.lang.NoSuchMethodError: org.codehaus.stax2.ri.EmptyIterator.getInstance()Lorg/codehaus/stax2/ri/EmptyIterator;",这个错误通常是由于缺少或不兼容的库版本引起的。具体来说,它指的是在运行时找不到所需的方法。 解决这个问题的方法是确保使用的库版本与代码兼容,并且所有的依赖项都正确配置。以下是一些可能的解决方法: 1. 检查库版本:首先,确保你使用的是与你的代码兼容的库版本。检查你的代码中对该方法的引用,并查看你的库文档以确定该方法是否存在于你使用的库版本中。 2. 更新库版本:如果你的库版本过旧或不兼容,尝试更新到最新版本。你可以通过查看库的官方网站或使用构建工具(如Maven或Gradle)来更新库版本。 3. 检查依赖项:确保你的项目的依赖项正确配置,并且没有冲突或重复的库。检查你的构建文件(如pom.xml或build.gradle)以确保所有的依赖项都正确声明和排除。 4. 清理和重新构建:有时,旧的编译文件或缓存可能会导致问题。尝试清理你的项目并重新构建它,以确保所有的依赖项都被正确解析和编译。 5. 检查类路径:确保你的类路径正确设置,并且包含了所有必需的库和依赖项。检查你的启动脚本或IDE配置,以确保类路径正确配置。 请注意,具体的解决方法可能因你的项目和环境而异。如果以上方法都没有解决问题,你可能需要进一步调查和调试,例如查看详细的错误日志或与库的开发者或社区寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值