使用 Excel 为 Testng Dataprovider 获取 "java.lang.NoClassDefFoundError"
Getting "java.lang.NoClassDefFoundError" for Testng Dataprovider with Excel
我无法克服错误 "java.lang.NoClassDefFoundError"
试过:
1-清理项目
2- 更新 testng xml
3- 验证了 package/class 结构
似乎没有任何效果:
注意:我没有使用 Maven,所有 jar 文件都是最新的(Testng、Apache、Selenium)
测试Class代码:
@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实用代码:
包所有Excel;
进口java.io.File;
导入 java.io.FileInputStream;
进口org.apache.poi.xssf.usermodel.XSSFSheet;
导入 org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Excel效用 {
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(来源不明)
只要你不使用Maven,你可以从这里下载jar。
将它添加到您的 class 路径,它应该可以工作:
https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.2
原因是,Apache 已从 commons-Collections4-4.0 中删除接口 ListValuedMap。
基本上按照 Axel 的 link,我复制了 "common compress jar" 并且提到的错误消失了,现在我遇到了另一个错误,需要在另一个问题中处理。暂时关闭这个
下载 apache 压缩 jars 并添加到库中,我试过了,效果很好。
我无法克服错误 "java.lang.NoClassDefFoundError"
试过: 1-清理项目 2- 更新 testng xml 3- 验证了 package/class 结构
似乎没有任何效果:
注意:我没有使用 Maven,所有 jar 文件都是最新的(Testng、Apache、Selenium)
测试Class代码:
@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实用代码:
包所有Excel;
进口java.io.File; 导入 java.io.FileInputStream;
进口org.apache.poi.xssf.usermodel.XSSFSheet; 导入 org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Excel效用 {
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.
只要你不使用Maven,你可以从这里下载jar。 将它添加到您的 class 路径,它应该可以工作: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.2
原因是,Apache 已从 commons-Collections4-4.0 中删除接口 ListValuedMap。
基本上按照 Axel 的 link,我复制了 "common compress jar" 并且提到的错误消失了,现在我遇到了另一个错误,需要在另一个问题中处理。暂时关闭这个
下载 apache 压缩 jars 并添加到库中,我试过了,效果很好。