You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

升级XMLBeans至4.0.0后调用open抛出NoSuchMethodError问题求助

解决XMLBeans 4.0.0升级后出现的NoSuchMethodError问题

这个问题我之前也碰到过,核心原因是XMLBeans 4.0.0的API变更与你当前使用的POI版本不兼容,具体分析和解决方案如下:

问题根源

XMLBeans 4.0.0对XmlOptions类做了破坏性API变更:原本无返回值的put(Object)方法被移除,替换成了带返回值的重载方法put(Object...)。而你项目中使用的POI版本(从堆栈里的SharedStringsTable.java:94来看,应该是POI 5.0.0以下的版本)仍然依赖XMLBeans 3.x中的旧版put方法,导致运行时找不到对应方法,抛出NoSuchMethodError

解决方案

你有两个可行的方向来解决这个问题:

方案1:升级POI到兼容XMLBeans 4.x的版本

Apache POI从5.0.0版本开始,正式将依赖的XMLBeans版本升级到4.x,完全适配XMLBeans 4.0.0的API变更。你只需要把项目中的POI相关依赖(比如poipoi-ooxml等)升级到5.0.0或更高版本即可。

举个Maven依赖的例子:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version> <!-- 或更高稳定版本 -->
</dependency>

方案2:回退XMLBeans版本到3.1.0

如果你暂时不想升级POI,可以将XMLBeans的版本回退到3.1.0,确保和当前POI版本的依赖完全匹配,这样就能恢复正常调用。

额外排查步骤

升级或回退后,建议检查项目的依赖树,确认没有依赖冲突:

  • Maven用户可以执行命令:mvn dependency:tree
  • Gradle用户可以执行命令:./gradlew dependencies
    确保没有其他依赖偷偷引入了不兼容的XMLBeans版本。

内容的提问来源于stack exchange,提问作者dotmindlabs

火山引擎 最新活动