【问题标题】:Not able to display a Jasper report on the browser , Allocate exception for servlet JaspersJob_servlet java.lang.ClassNotFoundException无法在浏览器上显示 Jasper 报告,为 servlet JaspersJob_servlet java.lang.ClassNotFoundException 分配异常
【发布时间】:2015-02-14 17:20:00
【问题描述】:

帮帮我,我有一个关于 servlet 的 jasper 报告的问题,下面提到了错误

严重:为 servlet JaspersJob_servlet 分配异常 java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRRuntimeException 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 在 java.lang.Class.getDeclaredConstructors0(Native Method) 在 java.lang.Class.privateGetDeclaredConstructors(未知来源)在 java.lang.Class.getConstructor0(未知来源)在 java.lang.Class.newInstance(未知来源)在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149) 在 org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Unknown Source)

Servlet 代码:

 package jasper_job_Print;

 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.sql.*;

 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import net.sf.jasperreports.engine.*;
 import net.sf.jasperreports.engine.design.JRDesignQuery;
 import net.sf.jasperreports.engine.export.JRPdfExporter;
 import net.sf.jasperreports.engine.util.JRLoader;

 public class JaspersJob_servlet extends HttpServlet {

 private static final long serialVersionUID = -3478873702336546526L;

 protected void service(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
Connection con=null;
File reportFile = null;
JasperPrint jasperPrint = null;
ResultSet rs=null;
Statement statement = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cloudinterdataset",                                                      "root","cosmos123");
        reportFile = new File("C:\\abd\\JasperJava\\report10.jasper");
        String sql1 = "SELECT * FROM userdetails "
                + "ORDER BY Lastname ";
        statement = con.createStatement();
        rs = statement.executeQuery(sql1);
        if (!reportFile.exists())
            throw new JRRuntimeException(
                    "File WebappReport.jasper not found. The report design must be compiled first.");
    } catch(Exception e) {
        System.out.println("Exception : "+e);
    }

    try {
        JRResultSetDataSource resultSetDataSource = new
                JRResultSetDataSource(rs);
        System.out.println("Filling Jasper PDF report...");
        JasperReport jasperReport = (JasperReport) JRLoader
                .loadObject(reportFile.getPath());
        jasperPrint = JasperFillManager.fillReport(jasperReport,null,resultSetDataSource);
        System.out.println("Done!");
        if (jasperPrint != null)
        {
            JRExporter exporter = null;
            exporter = new JRPdfExporter();

            exporter.setParameter(JRExporterParameter.JASPER_PRINT,
                    jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
                    response.getOutputStream());

            exporter.exportReport();
        } else {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>JasperReports </title>");
        out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"../stylesheet.css\"    title=\"Style\">");
        out.println("</head>");
        out.println("<body bgcolor=\"white\">");
        out.println("<span class=\"bold\">Empty response.</span>");
        out.println("</body>");
        out.println("</html>");
        }
    } catch(Exception e) {
        System.out.println("Exception :"+e);
    }
}

}

【问题讨论】:

  • 欢迎来到 Stack Overflow。这不是在这里提问的好方法。到目前为止,您是否尝试过任何方法来解决您的问题?首先展示你的努力,这样人们就可以展示他们的努力。请先阅读FAQ、How to Ask 和help center。
  • 是的,我的 java 小程序报告有效,我一直在调试我的代码并停留在这一点上,示例显示类似的代码有效,我的 web.xml 有正确提及的 servlet 名称和类,我调用了通过一个jsp动作servlt并得到
  • 嘿,我得到了上述问题的解决方案,任何人有同样的问题只需回复。

标签: java jsp servlets jasper-reports


【解决方案1】:

这是一个非常简单的解决方案,我没有将 Jar 文件放在我的项目库中。它现在正在工作,正好有时间发布我的答案

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 2014-09-16
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多