从jsp调用java方法

从jsp调用java方法,java,jsp,Java,Jsp,我从jsp调用我的java方法,它给出了NoClassDefFoundError:error 但是当我从main方法调用时,我的方法正在工作。 我在代码中使用了xlrdjar,并且还放置了jarlib文件夹。但它仍然会产生错误 异常跟踪: org.apache.jasper.JasperException: An exception occurred processing JSP page /exportDSD.jsp at line 20 17: //excel.getExcel()

我从jsp调用我的java方法,它给出了
NoClassDefFoundError:error

但是当我从
main
方法调用时,我的方法正在工作。 我在代码中使用了
xlrd
jar,并且还放置了jarlib文件夹。但它仍然会产生错误

异常跟踪

org.apache.jasper.JasperException: An exception occurred processing JSP page /exportDSD.jsp at line 20

17:     //excel.getExcel();
18:     
19:     Report r = new Report();
20:     r.generateReport();
21:     
22:     System.out.println("Generated DSD");
23: %> 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
堆栈跟踪

org.apache.jasper.JasperException: An exception occurred processing JSP page /exportDSD.jsp at line 20

17:     //excel.getExcel();
18:     
19:     Report r = new Report();
20:     r.generateReport();
21:     
22:     System.out.println("Generated DSD");
23: %> 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根本原因:

javax.servlet.ServletException: java.lang.NoClassDefFoundError: xlrd/Workbook
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:916)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:845)
    org.apache.jsp.exportDSD_jsp._jspService(exportDSD_jsp.java:107)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
我的代码:

import org.apache.poi.hssf.usermodel.HSSFCell; 
 import org.apache.poi.hssf.usermodel.HSSFCellStyle; 
 import org.apache.poi.hssf.usermodel.HSSFDataFormat; 
 import org.apache.poi.hssf.usermodel.HSSFRow; 
 import org.apache.poi.hssf.usermodel.HSSFSheet; 
 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
 import xlrd.*;

 public void generateReport() throws BiffException, ClassNotFoundException, SQLException, IOException { 
 ... ... 
 } 
我在jsp中这样调用:

<% Report r =new Report(); r.generateReport(); %>

显示JSP导入不正确:

Add jar in WEB-INF/lib
Add <%@ page import="xlrd.*" %> to the top of your JSP
在WEB-INF/lib中添加jar
添加到JSP的顶部
要导入多个类,请使用以下格式:

<%@ page import="com.sample.Report,xlrd.*" %>

显示JSP导入不正确:

Add jar in WEB-INF/lib
Add <%@ page import="xlrd.*" %> to the top of your JSP
在WEB-INF/lib中添加jar
添加到JSP的顶部
要导入多个类,请使用以下格式:

<%@ page import="com.sample.Report,xlrd.*" %>


问题在于某个jar中包含工作簿的jar。把它放在WEB-INF/lib文件夹中。我不认为,这也需要包含在JSP中。

问题在于jar在某个jar中包含工作簿。把它放在WEB-INF/lib文件夹中。我认为,这也不需要包含在JSP中。

NoClassDefFoundError
是一个JVM错误,这意味着JVM或类加载器无法加载类定义。这意味着找到了类,但由于某种原因JVM或类加载器无法加载类定义。
java.lang.NoClassDefFoundError:xlrd/Workbook
并不意味着找不到类,如果是这种情况,您会得到
ClassNotFoundException
。相反,找到了类文件,但JVM无法加载类定义


对于
NoClassDefFoundError
您可以检查
xlrd/Workbook
的源代码,如果它包含引用某个类的静态块或成员,而该类在运行时不存在或导致问题。

NoClassDefFoundError
是一个JVM错误,这意味着JVM或类加载器无法加载该类定义。这意味着找到了类,但由于某种原因JVM或类加载器无法加载类定义。
java.lang.NoClassDefFoundError:xlrd/Workbook
并不意味着找不到类,如果是这种情况,您会得到
ClassNotFoundException
。相反,找到了类文件,但JVM无法加载类定义


对于
NoClassDefFoundError
,您可以检查
xlrd/工作簿的源代码
是否包含引用某个类的静态块或成员,该类在运行时不存在或导致问题。

以下是我的代码:import org.apache.poi.hssf.usermodel.HSSFCell;导入org.apache.poi.hssf.usermodel.HSSFCellStyle;导入org.apache.poi.hssf.usermodel.HSSFDataFormat;导入org.apache.poi.hssf.usermodel.HSSFRow;导入org.apache.poi.hssf.usermodel.HSSFSheet;导入org.apache.poi.hssf.usermodel.HSSFWorkbook;进口xlrd.*;public void generateReport()从jsp中抛出biffeException、ClassNotFoundException、SQLException、IOException{……},我是这样调用的:请使用编辑函数将代码添加到问题中。不是作为评论。我看不懂你的代码。在ques中发布(格式化)共享您的jsp代码…可能是导入而不是更正这些是我在jsp中的导入这里是我的代码:import org.apache.poi.hssf.usermodel.HSSFCell;导入org.apache.poi.hssf.usermodel.HSSFCellStyle;导入org.apache.poi.hssf.usermodel.HSSFDataFormat;导入org.apache.poi.hssf.usermodel.HSSFRow;导入org.apache.poi.hssf.usermodel.HSSFSheet;导入org.apache.poi.hssf.usermodel.HSSFWorkbook;进口xlrd.*;public void generateReport()从jsp中抛出biffeException、ClassNotFoundException、SQLException、IOException{……},我是这样调用的:请使用编辑函数将代码添加到问题中。不是作为评论。我看不懂你的代码。在ques中发布(格式化)共享您的jsp代码…可能是导入而不是更正这些是我在jsp中的导入