2017-02-11 102 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

相关问题