【问题标题】:JasperReport viewer JSP WebApp errorJasperReport 查看器 JSP WebApp 错误
【发布时间】:2015-11-19 22:14:25
【问题描述】:


我正在使用;

  1. 雄猫 8
  2. Jasper iReport 5.6 也尝试过 Jasper Studio 6.1
  3. Tomcat/lib/jasperreports-6.1.1
  4. Tomcat/lib/mysql-connector-java-5.1.34-bin
  5. Tomcat/lib/commons-beanutils-1.9.0.jar
  6. Tomcat/lib/commons-collections-3.2.1.jar
  7. Tomcat/lib/commons-digester-2.1.jar
  8. Tomcat/lib/commons-logging-1.1.1.jar
  9. Tomcat/lib/groovy-all-2.4.3.jar
  10. itext-2.1.7.js3.jar

我已尝试在网络服务器中显示报告;

<%@ 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和报告文件在同一文件夹中)

任何想法和建议都非常受欢迎。
我已按照this tutorial

谢谢,
苏朋

【问题讨论】:

  • 你的 realPath 似乎有问题
  • test.jsp 和 report.jrxml 都在同一个文件夹中。你有什么建议吗?
  • 在WEB-INF/classes中添加report.jasper并重新编译运行
  • 没有WEB-INF/lib文件夹,我的目录结构如下; C:\Program Files\Apache Software Foundation\Tomcat 8.0; webapps, lib,bin,conf,work, logs and temp.
    我的 report.jrxml 路径 = C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\reports\report.jrxml
  • 也给出了同样的上述错误。谁能给出完整的工作代码?

标签: jsp tomcat jasper-reports


【解决方案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 将消失。

【讨论】:

    【解决方案2】:

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

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

    在你的情况下:

    1. 在 webapps 中创建您的项目目录
    2. 在项目根目录中添加所有图片、js、css、html、jsp等
    3. 将你所有的jar文件添加到/WEB-INF/lib文件夹中
    4. 还添加/WEB-INF/web.xml(部署描述符)
    5. 重启tomcat

    干杯!!

    【讨论】:

    • An error occurred at line: 31 in the jsp file: /test.jsp28: File reportFile = new File(application.getRealPath("report.jasper")); 29: Map parameters = new HashMap(); 30: parameters.put("sex","Male"); 31: byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);
    • C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\reports\report.jasper。也在同一目录中的 test.jsp
    • 你没有遵守我的指示。在 webapps 文件夹中添加一个目录,并按照我上面提到的那样放置您的项目文件。当您在 /webapps/your-directory 中添加 reports/report.jasper 时,将其更正为 File reportFile = new File(application.getRealPath("reports/report.jrxml")) 并希望它顺利运行而没有任何问题
    • Supun Silva 你标记了 Petter 的回答,而他是指你听从我的指示。无论如何,恭喜彼得
    猜你喜欢
    • 2010-10-20
    • 2013-05-24
    • 2017-02-10
    • 2018-07-04
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    相关资源
    最近更新 更多