我正在使用;
- Tomcat 8
- Jasper iReport 5.6 也试用了 Jasper Studio 6.1
- Tomcat/lib/jasperreports-6.1.1
- Tomcat/lib/mysql-connector-java-5.1.34-bin
- Tomcat/lib/commons-beanutils-1.9.0.jar
- Tomcat/lib/commons-collections-3.2.1.jar
- Tomcat/lib/commons-digester-2.1.jar
- Tomcat/lib/commons-logging-1.1.1.jar
- Tomcat/lib/groovy-all-2.4.3.jar
- 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关注了
谢谢你,
苏朋
最佳答案
您真的应该考虑正确部署您的应用程序,请参阅@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
将消失。
关于jsp - JasperReport 查看器 JSP WebApp 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33799066/