Получение NoClassDefFoundError при попытке прочитать лист Excel с помощью Apache poi api - PullRequest
0 голосов
/ 04 ноября 2018

Хост-машина: Ubuntu 18.04 openjdk 10.0.2 2018-07-17

Я пытаюсь прочитать данные из листа Excel, используя Apache POI, но получаю NoClassDefFoundError.

Это мой код:

package readatafromexcel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcel {

    public static void main(String[] args) throws Throwable {
        // TODO Auto-generated method stub

        try{

        //create file object
        File src = new File("/home/nisha/Downloads/files/First/refdata.xlsx");

        //create file Input stream object
        FileInputStream reader =new FileInputStream(src);

        //create workbook object
        XSSFWorkbook wb  =new XSSFWorkbook(reader);

        //create sheet 
        XSSFSheet sheet1=wb.getSheetAt(0);


        //fetch data from excel
        String rowData =sheet1.getRow(0).getCell(0).getStringCellValue();

        //print value
        System.out.println("data"+rowData);
        }

        catch  (FileNotFoundException e)
        {

        }



    }

}

Это трассировка стека:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
    at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:62)
    at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:180)
    at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:298)
    at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
    at readatafromexcel.ReadExcel.main(ReadExcel.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.utils.InputStreamStatistics
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 7 more

Ниже приведены библиотеки, связанные с проектом (с использованием Eclipse IDE): enter image description here

enter image description here

EDIT

После изменения Java на 1.8 теперь я получаю эту ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: InputStream of class class org.apache.commons.compress.archivers.zip.ZipArchiveInputStream is not implementing InputStreamStatistics.
    at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:63)
    at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:180)
    at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:298)
    at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
    at readatafromexcel.ExcelReadData.main(ExcelReadData.java:24)

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

У меня была та же проблема с POI 4.1.0, переключение обратно на 3.17 решило проблему.

0 голосов
/ 04 ноября 2018

Причина: java.lang.ClassNotFoundException: org.apache.commons.compress.utils.InputStreamStatistics

Я не нашел библиотеку commons-compress в списке библиотек, на которые ссылаются, поэтому попробуйте добавить commons-compress 1.18 в качестве зависимости

...