簡體   English   中英

從jsp調用Java方法

[英]Calling java method from jsp

我從jsp調用我的java方法,它給出了NoClassDefFoundError: error

但是當我從main方法調用時,我的方法正在工作。 我在代碼中使用了xlrd jar,並且也將jar lib文件夾放置了。 但仍然會給出錯誤。

異常跟蹤

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

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

要導入多個類,請使用以下格式:

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

問題出在某個罐子中包含Workbook的罐子中。 將其放在WEB-INF / lib文件夾中。 我不認為,這也需要包含在JSP中。

NoClassDefFoundError是JVM錯誤,這意味着JVM或類加載器無法加載類定義 這意味着找到了類,但是由於某些原因,JVM或類加載器無法加載類定義。
java.lang.NoClassDefFoundError: xlrd/Workbook並不意味着未找到該類,如果是這樣的話,您將得到ClassNotFoundException 相反,找到了類文件,但是JVM無法加載類定義。

對於NoClassDefFoundError您可以檢查xlrd/Workbook源代碼是否包含某些靜態塊或成員,這些靜態塊或成員引用了某些不存在的類或在運行時引起問題的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM