Apache POI ClassNotFoundException

3

我正在使用Eclipse尝试从Excel电子表格中获取工作表列表,但是当我运行代码时,Java会抛出异常。

以下是代码;

File myFile = new File("excel.xlsx");
    Workbook wb = null;
    try {
        wb = WorkbookFactory.create(myFile);
    } catch (EncryptedDocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvalidFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    List<String> sheetNames = new ArrayList<String>();
    for (int i=0; i<wb.getNumberOfSheets(); i++) {
        sheetNames.add( wb.getSheetName(i) );
    }
    System.out.println(sheetNames);

这里是日志记录;

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:293)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:252)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:231)
    at com.cogentautomation.view.View.main(View.java:19)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject
    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)
    ... 4 more

我已将以下内容作为库包含在Eclipse的Java构建路径中:

  • commons-codec
  • commons-logging
  • junit
  • log4j
  • poi
  • poi-ooxml
  • poi-scratchpad

我知道解决方案很简单,但我的思路一片空白。我没有使用Maven。

2个回答

5

2
正如异常信息所提示的那样,你需要使用XMLBeans库,这可能是Poi依赖的。如果你使用Gradle或Maven等依赖管理工具,它会自动包含该库。请点击XMLBeans了解更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接