使用SoapUI 5.5免费版+POI4.1.1时无法解析XSSFSheet类求助
解决SoapUI 5.5 + POI 4.1.1中"unable to resolve class org.apache.poi.xssf.usermodel.XSSFSheet"错误
问题根源分析
从你提供的jar包列表来看,最核心的问题是版本冲突——你在bin/ext目录里同时放置了POI 4.1.1的新版核心包和老旧的poi-contrib-3.6-20091214.jar,这会导致SoapUI的类加载器出现混乱,无法正确识别并加载POI 4.1.1中的XSSFSheet类。另外,你还缺失了POI运行必需的几个基础依赖包,这也会加剧类加载失败的问题。
分步解决方案
移除冲突的旧版本jar包
立刻删除poi-contrib-3.6-20091214.jar,这个2009年的旧版本和POI 4.1.1完全不兼容,会严重干扰新版本类的正常加载。补充POI 4.1.1必需的依赖jar包
POI 4.1.1运行需要以下几个基础依赖(你的当前jar包列表里没有这些),请下载对应版本的jar包放到bin/ext目录:- commons-codec-1.12.jar
- commons-collections4-4.4.jar
- commons-math3-3.6.1.jar
这些是POI处理Excel文件时不可或缺的基础工具类包,缺失会直接导致类加载失败。
重启SoapUI
SoapUI只会在启动时加载bin/ext目录下的jar包,所以修改完jar包后必须完全关闭并重新打开SoapUI,确保新的jar包被正确加载。优化你的Groovy代码(可选但推荐)
可以改用POI的通用SS(SpreadSheet)接口,这样代码既能同时兼容.xls和.xlsx格式,也能避免直接依赖特定XSSF类带来的潜在问题:import java.io.File import java.io.FileInputStream import org.apache.poi.ss.usermodel.Workbook import org.apache.poi.ss.usermodel.WorkbookFactory import org.apache.poi.ss.usermodel.Sheet import org.apache.poi.ss.usermodel.Row log.info("start") FileInputStream file = new FileInputStream(new File("C://Unique.xlsx")); // 使用WorkbookFactory自动识别文件格式 Workbook workbook1 = WorkbookFactory.create(file) Sheet readsheet1 = workbook1.getSheet("Data") Iterator<Row> rows = readsheet1.rowIterator()
验证步骤
完成以上操作后,重新运行你的Groovy脚本:
- 如果仍报错,检查
bin/ext目录下所有POI相关jar包的版本是否统一为4.1.1,杜绝混合不同版本的情况 - 确认所有jar包都没有损坏(可重新下载官方的POI 4.1.1二进制包)
内容的提问来源于stack exchange,提问作者Ashwin
相关产品推荐
相关产品推荐

