ฉันได้รับ ClassNotFoundException เมื่อฉันพยายามอ่านจากไฟล์ Excel

เมื่อฉันพยายามอ่านจากไฟล์ Excel โดยใช้ apace poi ฉันจะได้รับ ClassNotFoundException ตามด้วยข้อผิดพลาดอื่น ๆ และฉันได้นำเข้าไฟล์ jar ที่จำเป็นทั้งหมดในไลบรารีอ้างอิงแล้ว

อย่างไรก็ตาม ฉันยังใหม่กับการเขียนโค้ด

นี่คือรหัส:

import java.io.*;
import java.io.File;
import java.io.FilterInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.*;
import org.apache.poi.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test {

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


FileInputStream F = new FileInputStream("Carbcounting.xlsx");

    XSSFWorkbook wb = new XSSFWorkbook(F);

    XSSFSheet sheet = wb.getSheetAt(0);

    FormulaEvaluator formulaEva = wb.getCreationHelper().createFormulaEvaluator();

    for(Row row : sheet){
        for(Cell cell : row){

            System.out.print(cell.getStringCellValue());


            }

        }
        System.out.println();

    }

}

และนี่คือข้อผิดพลาดทั้งหมดที่ฉันได้รับเมื่อฉันพยายามเรียกใช้:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
    at project.Test.main(Test.java:28)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

person Ali    schedule 11.02.2017    source แหล่งที่มา
comment
คุณนำเข้าคลาสทั้งหมดที่คุณต้องการอย่างชัดเจนในการทดสอบชั้นเรียนของคุณ แต่ข้อความแสดงข้อผิดพลาดจะบอกคุณว่า Apache POI ต้องการแพ็คเกจ org.apache.commons ด้วย คุณมีสิ่งนี้นำเข้าในโครงการของคุณด้วยหรือไม่? ฉันเดาว่าไม่. และนั่นคือเหตุผลสำหรับ CNFE ของคุณ   -  person Lynx 242    schedule 11.02.2017


คำตอบ (1)


คุณต้องเพิ่มไฟล์ commons-collections4-x.x.jar ในพาธการ build ของคุณแล้วลองอีกครั้ง มันควรจะทำงาน

รับได้จากที่นี่: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.0

นอกจากนี้ เพียงเพิ่ม:
คุณได้รับข้อผิดพลาดนี้ (NoClassDefFoundError) ด้วยเหตุผลสองประการ:

  1. Java Virtual Machine ไม่สามารถค้นหาคลาสใดคลาสหนึ่งในขณะรันไทม์ซึ่งมีให้ใช้งานในขณะคอมไพล์ได้

  2. หากมีคลาสอยู่ในช่วงเวลาคอมไพล์ แต่ไม่มีในคลาสพาธ Java ระหว่างรันไทม์

person Manoj Kengudelu    schedule 11.02.2017