JasperReport查看器JSP WebApp错误

时间:2015-11-19 08:50:46

标签: jsp tomcat jasper-reports


我正在使用;

  1. Tomcat 8
  2. Jasper iReport 5.6也尝试过Jasper Studio 6.1
  3. 的Tomcat / LIB / JasperReports的-6.1.1
  4. 的Tomcat / lib中/ MySQL的连接器的Java-5.1.34槽
  5. 的Tomcat / LIB /公地BeanUtils的-1.9.0.jar
  6. 的Tomcat / LIB /公地集合-3.2.1.jar
  7. 的Tomcat / LIB /公地消化器-2.1.jar
  8. 的Tomcat / LIB /共享记录-1.1.1.jar
  9. 的Tomcat / LIB / Groovy的全2.4.3.jar
  10. iText的-2.1.7.js3.jar
  11. 我试图在网络服务器中显示报告;

    <%@ page  import="java.io.*"%> 
    <%@ page  import="java.sql.Connection"%> 
    <%@ page  import="java.sql.DriverManager"%>
    <%@ page  import="java.util.HashMap"%>
    <%@ page  import="java.util.Map"%>
    <%@ page  import="net.sf.jasperreports.engine.*"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h2>Hello World!</h2>
        <%
            Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "root", "root");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            File reportFile = new File(application.getRealPath("report.jasper"));
            Map parameters = new HashMap();
            byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);
    
            response.setContentType("application/pdf");
            response.setContentLength(bytes.length);
            ServletOutputStream outStream = response.getOutputStream();
            outStream.write(bytes, 0, bytes.length);
            outStream.flush();
            outStream.close();
        %>
    </body>
    </html>
    

    它在页面上给我一个附加错误(jsp和同一文件夹中的报告文件)See the error screenshot

    任何想法和建议都高度评价 我跟随this tutorial按照 谢谢,
    Supun

2 个答案:

答案 0 :(得分:1)

您应该考虑正确部署应用程序,请参阅@Ghayel的答案

您的问题是application.getRealPath("report.jasper")返回null,因此无法找到report.jasper ..

因为你坚持使用代码:

替换

 File reportFile = new File(application.getRealPath("report.jasper"));

File reportFile = new File("C:\\Program Files\\Apache Software Foundation\\Tomcat 8.0\\webapps\\reports\\report.jasper");

确保 .jrxml .jasper 的编译版本在那里...... nullpointer将消失。

答案 1 :(得分:0)

请始终在$ TOMCAT_HOME / webapps / your-project-directory-root中创建项目目录,然后将所有jar文件插入到项目根目录中作为WEB-INF / lib

在你的project-directory-root中,你可以添加html,css,js,jsp等,并将java文件添加到/ WEB-INF / classes文件夹

在你的情况下:

  1. 在webapps中创建项目目录
  2. 在项目根目录中添加所有图像,js,css,html,jsp等
  3. 在/ WEB-INF / lib文件夹中添加所有jar文件
  4. 还添加/WEB-INF/web.xml(部署描述符)
  5. 重启tomcat
  6. 干杯!!