当前位置: 首页 > 知识库问答 >
问题:

什么给了java.lang.NoClassDefFoundError?

訾凯歌
2023-03-14
    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
    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

}

}

共有1个答案

傅阿苏
2023-03-14

你的代码无关紧要。noClassDefFounderRor发生在编译时可用的类在运行时不可用时。如果您提供了完整的stacktrace,以及尚未找到的类的实际名称,则可以给出更精确的建议。

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

考虑到您添加的stacktrace,您缺少Apache POI:XMLBeans的传递依赖性。您可能在运行时缺少这个JAR。这完全取决于您如何运行您的项目。

 类似资料:
  • 在实验了2个reducer之后,阅读了Hadoop Wiki中的HowManyMapsAndReduces,Hadoop:reducer的数量保持不变,并且设置了映射任务和reduce任务的数量,我得到的结论是: 如果我有1个map(我知道这个数字实际上是由Hadoop决定的)和2个reducer(实际上我只提供了1个带有reducer代码的文件,例如),那么下面会发生什么? null 我想第一个

  • 该IV是否满足“对于给定的密钥,IV不得重复”的要求。来自RFC 4106? 我也非常感谢对我相关问题的任何回答/洞察力(见下文),但第一个问题是最困扰我的。我不知道在哪里可以找到源代码或文档来回答这个问题。 下面是大致的完整代码。如果我在写这篇文章时引入了错误,我深表歉意: > 用cipher.getiv()返回的IV对我来说以这种方式使用安全吗? 它是否避免了在伽罗瓦/计数器模式下重复使用IV

  • 我正在考虑使我的应用程序更安全,并了解正在发生的一切。 我在Spring Boot有一个登录名。该登录调用UserDetailsService实现,如下所示: 这为我创建了一个具有用户角色的会话,以便我可以配置网络安全配置器适配器等。 所以我的问题是,用JWT添加过滤器到底做了什么?SpringSecurity在默认情况下是否已经这样做了,因为我所做的已经创建了一个经过授权和身份验证的用户。 谢了

  • 编写并测试您自己的函数char*funct(char*str,int x),反转字符串str(位置n的字符除外),并返回修改后的str作为结果。函数funct的用途可以是: 这是主要的: 你好CppepC ollH 应该是: 你好Cpp

  • 问题内容: 我的申请中出现了似乎无法再现的故障。我有一个TCP套接字连接失败,该应用程序尝试重新连接它。在第二次尝试重新连接的connect()调用中,我得到了一个错误结果,错误代码为errno == EADDRNOTAVAIL,connect()的手册页说:“指定的地址在本地计算机上不可用。” 查看对connect()的调用,第二个参数似乎是错误所指向的地址,但是据我了解,该参数是远程主机的TC

  • 我编写了以下pom.xml文件: 我的目的是构建一个jar文件,它的主类是com.earnix.tools.BatchPricing.main。如你所见,我有许多依赖项。四个依赖项是不属于maven Artifactory的jar文件:C:\IBM\WebSphere\AppServer\runtimes\com.ibm.ws.webservices.thinclient_8.5.0.jar、C: