gpt4 book ai didi

java - 使用 jasper 和 servlet 创建 pdf 报告

转载 作者:行者123 更新时间:2023-12-02 07:14:48 25 4
gpt4 key购买 nike

我想使用 servlet、.jasper 文件创建 pdf 格式的报告,但有一个异常(exception):

HTTP Status 500 - Servlet execution threw an exception

--------------------------------------------------------------------------------

type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JasperRunManager one.Patient.doGet(Patient.java:46) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.34 logs.


servlet 代码是:

package one;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.util.HashMap;

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;

/**
* Servlet implementation class Patient
*/
@WebServlet("/Patient")
public class Patient extends HttpServlet implements Servlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Patient() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Connection con=DBCon.getConnection();
InputStream inS=getServletContext().getResourceAsStream("/report-src/ganeshaji.jashper");

OutputStream outS=response.getOutputStream();
response.setContentType("application/pdf");

try {
JasperRunManager.runReportToPdfStream(inS, outS, new HashMap<String, Object>(),con);
outS.flush();
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
response.setContentType("text/html");
e.printStackTrace();
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

}

请。给我解决方案

最佳答案

通过调查根本原因

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JasperRunManager 

看来您要么错过了 jasper jar,要么使用了不支持 JasperRunManager 的错误版本。

在类路径中包含正确的 jar 将解决您的问题。

请下载这些 jar :

itext-4.2.0.jar 

itextpdf-5.3.4.jar

jasperreports-4.0.1.jar

jasperreports-fonts-4.0.0.jar

并编写如下代码:

try { 
FileInputStream fis = new FileInputStream(YOURREPORTPATH.jasper");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fis);
jasperReport = (JasperReport) JRLoader.loadObject(bufferedInputStream);
} catch (Exception e2) {
e2.printStackTrace();
}

然后在填写参数和数据源后创建 pdf,如下所示:

JasperExportManager.exportReportToPdfFile(jasperPrint, OUTPUTFILENAME+".pdf");

谢谢...

777先生

关于java - 使用 jasper 和 servlet 创建 pdf 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com