嗨,我对jasper报道很新。只需要一个我需要从.jasper文件中检索信息的要求。我正在使用以下代码。
但问题是compileReport没有占用我在本地机器上的文件而且我得到一个错误,如
线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / commons / digester / Digester at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:150) 在jasper.test(jasper.java:28) 在jasper.main(jasper.java:40)
我不确定是什么问题。是不是我的.jasper文件?缺少哪一堂课? 我绝对无能为力。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import dori.jasper.engine.JRException;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
public class jasper {
public static void test() throws FileNotFoundException, net.sf.jasperreports.engine.JRException{
JasperReport report = JasperCompileManager.compileReport("C:\\Users\\Mandakini\\Downloads\\testReport.jasper");
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String, String>());
// export it!
//File pdf = File.createTempFile("output.", ".pdf");
OutputStream output= new FileOutputStream(new File("F:/catalog.pdf"));
JasperExportManager.exportReportToPdfStream(print,output);
}
public static void main(String args[]) throws FileNotFoundException, net.sf.jasperreports.engine.JRException{
test();
}
}
由于
答案 0 :(得分:0)
java.lang.NoClassDefFoundError
或ClassNotFoundException
几乎总是告诉您它引用的类在类路径中缺失。在这种情况下,它是org.apache.commons.digester.Digester
。您可以下载包含此类here的jar。
要生成报告,请执行以下操作:
JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(yourJasperFilePath);
Map<String, Object> parameters = new HashMap<>();
// set your parameters
Class.forName("com.mysql.jdbc.Driver");
Connection con = ...; // possibly get a connection
byte[] report = JasperRunManager.runReportToPdf(jasperReport, parameters, con); // pass the report, the report parameters, and a connection
// this will fill the byte[] with the produced report
FileOutputStream out = new FileOutputStream(somePath);
out.write(report);
out.close();
至于它产生什么样的报告,我不确定你是如何设置它的。该信息可能位于.jasper
或.jrxml
文件中。