Apache POI 5.2.2部署WebLogic14.1报NoSuchMethodError问题咨询
Apache POI版本升级WebLogic部署异常排查
问题背景
当前正在执行组件版本升级项目,计划将项目中使用的Apache POI 4.1.2升级至Apache POI 5.2.2版本,各环境表现如下:
- Netbeans IDE 12.2环境下运行本地独立程序,所有功能均正常
- 程序迁移至运行Java 8的WebLogic 14C(14.1)服务器后功能无法正常运行,日志中未输出任何报错信息
- Jdeveloper中执行Excel导出操作时,引入Apache POI 5.2.2相关JAR包会触发错误:
<incident 305 created with problem key "DFW-99998 [java.lang.NoSuchMethodError]">,完全相同的Java程序使用Apache POI 4.1.2 API时可正常运行 - 经调试定位,执行如下代码行时抛出NoSuchMethodError:
workbook = new SXSSFWorkbook(new XSSFWorkbook(), 100, true, true); workbook.setCompressTempFiles(true);
已执行排查操作
已在Jdeveloper中开启verbose类加载日志,添加的JVM启动参数如下:
-verbose:class -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:-DisplayVMOutput -XX:LogFile=C:\Record.log
查看生成的日志文件,未输出POI相关的明确错误信息。
当前配置清单
引入的Apache POI相关依赖JAR包
- commons-collections4-4.4.jar
- commons-compress-1.21.jar
- commons-io-2.11.0.jar
- commons-math3-3.6.1.jar
- log4j-api-2.17.2.jar
- log4j-core-2.17.2.jar
- poi-5.2.2.jar
- poi-ooxml-5.2.2.jar
- poi-ooxml-full-5.2.2.jar
- SparseBitSet-1.2.jar
- xmlbeans-5.0.3.jar
weblogic.xml现有配置
已完成类加载优先规则配置,内容如下:
<prefer-application-packages> <package-name>org.apache.commons.collections4.*</package-name> <package-name>org.apache.commons.compress.*</package-name> <package-name>org.apache.poi.*</package-name> <package-name>org.apache.xmlbeans.*</package-name> <package-name>org.openxmlformats.*</package-name> <package-name>schemaorg_apache_xmlbeans.*</package-name> <package-name>schemaorg_apache_xmlbeans.system.sXMLCONFIG.*</package-name> <package-name>schemaorg_apache_xmlbeans.system.sXMLLANG.*</package-name> <package-name>schemaorg_apache_xmlbeans.system.sXMLSCHEMA.*</package-name> <package-name>schemaorg_apache_xmlbeans.system.sXMLTOOLS.*</package-name> </prefer-application-packages> <prefer-application-resources> <resource-name>schemaorg_apache_xmlbeans/system/sXMLCONFIG/TypeSystemHolder.class</resource-name> <resource-name>schemaorg_apache_xmlbeans/system/sXMLLANG/TypeSystemHolder.class</resource-name> <resource-name>schemaorg_apache_xmlbeans/system/sXMLSCHEMA/TypeSystemHolder.class</resource-name> <resource-name>schemaorg_apache_xmlbeans/system/sXMLTOOLS/TypeSystemHolder.class</resource-name> </prefer-application-resources>
待确认问题
- 是否需要在weblogic.xml文件中补充额外配置
- API调用失败时如何获取更完整的栈轨迹与错误详情
内容的提问来源于stack exchange,提问作者satyakumar putcha
相关产品推荐
相关产品推荐

