简体   繁体   English

从jsp调用Java方法

[英]Calling java method from jsp

I am calling my java method from jsp its giving NoClassDefFoundError: error . 我从jsp调用我的java方法,它给出了NoClassDefFoundError: error

But my method is working when i am calling from the main method. 但是当我从main方法调用时,我的方法正在工作。 i have used xlrd jar in my code and i have placed the jar lib folder as well. 我在代码中使用了xlrd jar,并且也将jar lib文件夹放置了。 but still it gives error. 但仍然会给出错误。

Exception trace : 异常跟踪

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: %> 

Stacktrace : Stacktrace

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)

root cause : 根本原因

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)

My code : 我的代码:

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 { 
 ... ... 
 } 

From jsp i am calling like this: 从jsp,我这样调用:

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

Appears JSP import not correct: 似乎JSP导入不正确:

Add jar in WEB-INF/lib
Add <%@ page import="xlrd.*" %> to the top of your JSP

To import more than one classes, use the following format: 要导入多个类,请使用以下格式:

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

The issue is with jar containing Workbook in some jar. 问题出在某个罐子中包含Workbook的罐子中。 Put it in the WEB-INF/lib folder. 将其放在WEB-INF / lib文件夹中。 I don't think, this need to be included in the JSP as well. 我不认为,这也需要包含在JSP中。

NoClassDefFoundError is a JVM Error which means that JVM or class loader was not able to load the class definition . NoClassDefFoundError是JVM错误,这意味着JVM或类加载器无法加载类定义 This means that class was found but due to some reason JVM or class loader was not able to load the class definition. 这意味着找到了类,但是由于某些原因,JVM或类加载器无法加载类定义。
java.lang.NoClassDefFoundError: xlrd/Workbook doesn't mean that class was not found, if that was the case you would have got ClassNotFoundException . java.lang.NoClassDefFoundError: xlrd/Workbook并不意味着未找到该类,如果是这样的话,您将得到ClassNotFoundException On contrary, class file was found but JVM is unable to load the class definition. 相反,找到了类文件,但是JVM无法加载类定义。

For NoClassDefFoundError you can check source of xlrd/Workbook if it contains some static block or member which is referencing some class which is not present or causing issue at runtime. 对于NoClassDefFoundError您可以检查xlrd/Workbook源代码是否包含某些静态块或成员,这些静态块或成员引用了某些不存在的类或在运行时引起问题的类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM