什么给 java.lang.NoClassDefFoundError?

新手上路,请多包涵

我想阅读 excel 文件但给

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject
 at ExcelReader.main(ExcelReader.java:32)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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

请帮我。首先打开 .xlsx 文件,然后给出第一张纸。最后在控制台上打印 excel 文件的数据。 ps:我把poi-ooxml-3.9-20121203.jar 添加到我的项目中。

     import java.io.File;
    import java.io.FileInputStream;
    import javax.swing.text.html.HTMLDocument.Iterator;
    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.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import java.util.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    /**
     * @author mohammad hosein
    *
    */
    public class ExcelReader {

/**
 * @param args
 */
public static void main(String[] args) {
    try
    {
    FileInputStream file = new FileInputStream(new File("E:\\test.xlsx"));

    //Get the workbook instance for XLS file
    XSSFWorkbook workbook = new XSSFWorkbook (file);

    //Get first sheet from the workbook
    XSSFSheet sheet = workbook.getSheetAt(0);

    //Get iterator to all the rows in current sheet
    java.util.Iterator<Row> rowIterator = sheet.iterator();

    while(rowIterator.hasNext())
    {
        Row row = rowIterator.next();
        java.util.Iterator<Cell> cellIterator = row.cellIterator();

        while(cellIterator.hasNext())
        {
            Cell cell = cellIterator.next();
            System.out.print(cell.getStringCellValue() + "\t");
        }
        System.out.println("");
    }
    }
    catch(Exception e)
    {
        System.out.println("EROR!");
    }

    //Get iterator to all cells of current row

}

}

原文由 sharafi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 537
2 个回答

您的代码无关紧要。 NoClassDefFoundError 当编译时可用的类在运行时不可用时发生。如果您提供了完整的堆栈跟踪以及尚未找到的类的实际名称,则可以提供更准确的建议。

当您使用与用于构建代码的版本不同的 JAR 版本运行代码时,通常会发生这种情况。流氓 JAR 可能来自应用程序容器或类似容器,并且比正确的 JAR 更早放置在类路径中。

更新

鉴于您添加的堆栈跟踪,您缺少 Apache POI 的传递依赖性:XMLBeans。您可能会在运行时丢失此 JAR。这一切都取决于您运行项目的精确程度。

原文由 Marko Topolnik 发布,翻译遵循 CC BY-SA 4.0 许可协议

我想你忘了检查项目属性中的库。

  1. 右键单击您的项目->选择属性
  2. 选择 Java 构建路径
  3. 选择选项卡对象和导出
  4. 然后选择您添加的库。
  5. 好的,然后再次运行您的项目。

原文由 System Integration Pvt Ltd 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题