如何用JSR223/BeanShell Sampler在JMeter中创建工作簿?报错求助
问题解决:JMeter创建XLSX工作簿报错NoClassDefFoundError
问题根源
你遇到的NoClassDefFoundError: org/apache/poi/xssf/usermodel/XSSFWorkbook错误,是因为tika-app.jar并非用于创建Excel工作簿的工具,它没有完整包含Apache POI的XSSF核心类,无法支持XLSX文件的创建与写入操作。
解决方案
1. 替换依赖包
移除tika-app.jar,下载Apache POI的完整依赖包(版本建议统一,比如5.2.3),将以下jar包放入JMeter的lib/ext目录,随后重启JMeter:
poi-xssf-5.2.3.jarpoi-5.2.3.jarcommons-codec-1.15.jarcommons-collections4-4.4.jarcommons-math3-3.6.1.jarpoi-ooxml-5.2.3.jarpoi-ooxml-schemas-4.1.2.jarxmlbeans-5.1.1.jarcurvesapi-1.06.jar
2. 修改JSR223 Sampler代码
使用Groovy语言编写正确的XLSX创建与写入逻辑,示例代码如下:
import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.ss.usermodel.Sheet import org.apache.poi.ss.usermodel.Row import org.apache.poi.ss.usermodel.Cell import java.io.FileOutputStream // 初始化工作簿和工作表 def workbook = new XSSFWorkbook() def sheet = workbook.createSheet("测试数据") // 第一行第一列写入测试内容 Row row = sheet.createRow(0) Cell cell = row.createCell(0) cell.setCellValue("JMeter生成的测试数据") // 写入本地文件,注意修改为有写入权限的路径 FileOutputStream outputStream = new FileOutputStream("D:/jmeter_output.xlsx") workbook.write(outputStream) // 关闭资源 outputStream.close() workbook.close()
3. 关键注意事项
- 确保文件路径有写入权限,避免因权限不足导致写入失败
- JSR223 Sampler的语言选择Groovy,相比其他语言性能更优且语法更简洁
内容的提问来源于stack exchange,提问作者Vaibhav
相关产品推荐
相关产品推荐

