当前位置: 首页 > 知识库问答 >
问题:

无法在浏览器上显示Jasper报告,为servlet分配异常JaspersJob_servletjava.lang.ClassNotFoundException

卫松
2023-03-14

帮帮我我对jasper报告在servlet上有一个问题,下面提到了错误

严重:为servlet JasperJob_servlet java分配异常。lang.ClassNotFoundException:net。旧金山。jasperreports。发动机JRRuntimeException位于org。阿帕奇。卡塔琳娜。加载器。WebappClassLoader。loadClass(WebappClassLoader.java:1680)位于org。阿帕奇。卡塔琳娜。加载器。WebappClassLoader。java上的loadClass(WebappClassLoader.java:1526)。朗,同学们。java上的getDeclaredConstructors0(本机方法)。朗,同学们。java上的privateGetDeclaredConstructors(未知源代码)。朗,同学们。java上的getConstructor0(未知源代码)。朗,同学们。组织上的newInstance(未知源)。阿帕奇。卡塔琳娜。果心标准包装纸。loadServlet(StandardWrapper.java:1149)位于org。阿帕奇。卡塔琳娜。果心标准包装纸。在组织中分配(StandardWrapper.java:827)。阿帕奇。卡塔琳娜。果心标准包装阀。在org上调用(StandardWrapperValve.java:129)。阿帕奇。卡塔琳娜。果心标准连接阀。在org上调用(StandardContextValve.java:191)。阿帕奇。卡塔琳娜。果心标准阀门。在org上调用(StandardHostValve.java:127)。阿帕奇。卡塔琳娜。阀门。打开阀门。在org上调用(ErrorReportValve.java:103)。阿帕奇。卡塔琳娜。果心标准引擎版本。在org上调用(StandardEngineValve.java:109)。阿帕奇。卡塔琳娜。连接器。郊狼适应者。服务(CoyoteAdapter.java:293)位于org。阿帕奇。郊狼。http11。HTTP11处理器。进程(Http11Processor.java:861)位于org。阿帕奇。郊狼。http11。http11协议$Http11ConnectionHandler。进程(Http11Protocol.java:606)位于org。阿帕奇。公猫util。网JIoEndpoint$Worker。在java上运行(JIoEndpoint.java:489)。朗。丝线。运行(未知源)

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);
    }
}

}

共有1个答案

宋腾
2023-03-14

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

 类似资料:
  • 用于在目录中存储jasper报表的简单Java应用程序的Quartz调度程序正在工作,因为我使用了公共void execute而不是公共static void main并在作业类中执行,如下所示, 我不希望在运行调度器servlet时以正确的方式传递servlet id的URL,调度器servlet将触发作业类文件,而作业类文件将调用servlet类。 它适用于一个简单的java应用程序,但我的问

  • 如何在jasper子报告中显示当前页码?我只做了第一页,变量如下:$V{page_NUMBER}和“(”$V{page_COUNT}“)”,但我们如何在所有子报告中显示?

  • 我正在从. jasper文件加载jasper报告文件以提高性能,如下所示。 但是我现在有一个要求,动态形成的查询必须设置为. jasper(编译)文件。有没有办法做同样的事情?

  • 我正在使用Jersey实施Rest服务。我想在浏览器上显示JSON,但我得到的是XML。 我感谢你的帮助。

  • 我是贾斯珀报告的新手。我成功地显示了一个带有碧玉报告的表格。但是如何通过Spring控制器在碧玉报告中显示多个表格? 我没有使用数据库作为数据源,只是在ArrayList中使用普通的POJO。 这是我的Spring配置 这是我的控制器。 人员类 如何定义不同的数据源,以便我可以在报表中使用两个(或更多)列表?或者,也许我可以使用一个包含多个列表的数据源?

  • 我对Jasper Sub报告有问题。我有一个报告模板,它有一个子报告;在主报表中,我有一些参数应该在子报表中也可用。