2017-02-11 58 views
0

當我嘗試使用快速地POI從Excel文件讀取我得到的ClassNotFoundException其次是其他錯誤,我已導入在基準庫中的所有必要的JAR文件我得到的ClassNotFoundException當我嘗試從Excel讀取文件

順便說一下我還是新編碼

繼承人的代碼:

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 
+0

您確實已將您明顯需要的所有課程自己導入到課程「測試」中。但是錯誤消息告訴你,Apache POI也需要org.apache.commons包。你的項目中是否也有這種進口?我猜不會。這就是你的CNFE的原因。 – DiabolicWords

回答

1

您需要在您的構建路徑中添加commons-collections4-x.x.jar文件並再次嘗試。它應該工作。

從這裏得到它:https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.0

而且,只是添加了:
您收到此錯誤(NoClassDefFoundError的)majorly有兩個原因:

  1. Java虛擬機無法找到運行時的特定類在編譯時可用。

  2. 如果一個類在編譯時存在,但在運行時在java classpath中不可用。

+0

它的工作!謝謝 – Ali

相關問題