java.lang.NoClassDefFoundError: org/apache/poi/xssf/usermodel/XSSFWorkbook AND java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSF

java.lang.NoClassDefFoundError: org/apache/poi/xssf/usermodel/XSSFWorkbook AND java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSF

我正在使用 Apache poi 5.0.0 从 Excel(.xlsx) 文件中读取一些数据。我将该项目作为控制台应用程序启动,因此实现工作正常。我将我使用的 类 转移到一个 Servlet 项目。现在的问题是,当我从主页请求 'generate' 时,我创建了一个 ReadXL 实例。但是当我尝试实例化 XSSF 工作簿时,出现了上述错误。我已经将所有 poi 库(使用 IntelliJ)包含到项目中(poi-ooxml-full,poi-ooxml)。

请求'generate':

<form action="generate" method="get">
        <div id="list">
          <br>
          <!-- <div class="fileName">List</div> <div class="deleteFile"> X </div><br><br>
          <div class="fileName">List</div> <div class="deleteFile"> X </div><br><br>
          <div class="fileName">List</div> <div class="deleteFile"> X </div><br><br>
          <div class="fileName">List</div> <div class="deleteFile" onclick="alert('hi')"> X </div><br><br> -->
        </div><br><br>
      <input type="submit" value="GENERATE .XLSX">
      </form>

控制器:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        ReadXL newXL = new ReadXL("C:\xampp\tomcat\webapps\Public\ΠΡΟΤΥΠΟ ΠΡΟΜΗΘΕΥΤΗ.xlsx");
        RequestDispatcher rd=request.getRequestDispatcher("index.html");
        rd.forward(request, response);
    }

ReadXL:

public ReadXL(String path) throws IOException{
        this.openXL(path);
        .
        .
        .
}

private void openXL(String path) throws IOException{
        xlFile = new File(path);
        fis = new FileInputStream(xlFile);

        workbook = new XSSFWorkbook(fis); // get workbook <-- ERROR THROWN HERE
        .
        .
        .

    }

您需要添加 poi-ooxml-5.0.0.jar,其中包含 class。

here 下载。