使用Excel获取Testng Dataprovider的“ java.lang.NoClassDefFoundError”

时间:2018-09-19 04:28:59

标签: selenium-webdriver apache-poi testng-dataprovider

我无法克服错误“ java.lang.NoClassDefFoundError”

已尝试: 1-清理项目 2-更新testng xml 3-验证包/类结构

似乎没有任何作用

注意:我没有使用Maven,并且所有jar文件都是最新的(Testng,Apache,Selenium)

测试类代码:

@DataProvider(name ="calldata")
public Object[][] getData() {

    ExcelUtility util = new ExcelUtility("excel path");

    int rows = util.getRowCount(0);

    Object data [][] = new Object[rows] [6];

    for(int i=1; i<rows; i++)
    {
        data[i][0]=util.getData(0, i, 0);
        data[i][1]=util.getData(0, i, 1);
        data[i][1]=util.getData(0, i, 2);
        data[i][1]=util.getData(0, i, 3);
        data[i][1]=util.getData(0, i, 4);
        data[i][1]=util.getData(0, i, 5);
    }

    return data;
}

@Test(dataProvider ="calldata")
 public void AddaDependent(String url, String client, String eliggrp, String empnumber, String firstname, String SSN) 
    {

Excel实用程序代码:

打包AllExcel;

导入java.io.File; 导入java.io.FileInputStream;

导入org.apache.poi.xssf.usermodel.XSSFSheet; 导入org.apache.poi.xssf.usermodel.XSSFWorkbook;

公共类ExcelUtility {

XSSFWorkbook wb;
XSSFSheet sheet1;

public ExcelUtility(String excelPath)
{
    try
    {
        File src = new File(excelPath);

        FileInputStream fis= new FileInputStream(src);
        wb = new XSSFWorkbook(fis);

    }
    catch (Exception e) {
        System.out.println(e.getMessage());

    }
}

public String getData(int sheetNumber, int row, int column)
{
    sheet1 = wb.getSheetAt(0);

    String data = sheet1.getRow(row).getCell(column).getStringCellValue();

    return data;
}

public int getRowCount(int sheetIndex)
{
    int row = wb.getSheetAt(sheetIndex).getLastRowNum();

    row = row+1;

    return row;
}

}

错误:

[RemoteTestNG]检测到TestNG版本6.14.3 [实用程序] [错误] [错误] java.lang.NoClassDefFoundError:org / apache / commons / compress / archivers / zip / ZipFile     在org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:298)     在org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)     在org.apache.poi.xssf.usermodel.XSSFWorkbook。(XSSFWorkbook.java:307)     在AllExcel.ExcelUtility。(ExcelUtility.java:22)     在AutFramework.AddDependent.getData(AddDependent.java:36)     在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处     在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)     在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)     在java.lang.reflect.Method.invoke(未知来源)

3 个答案:

答案 0 :(得分:0)

只要您不使用Maven,就可以从此处下载jar。 将其添加到您的类路径中,它应该可以工作: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.2

原因是,Apache从commons-Collections4-4.0中删除了接口ListValuedMap。

答案 1 :(得分:0)

基本上,按照Axel的链接,我复制了“ common compress jar”,提到的错误消失了,现在我遇到了另一个错误,需要在另一个问题中处理。立即关闭此

答案 2 :(得分:0)

下载apache压缩jar并添加到库中,我尝试了一下,效果很好。