0

こんにちは、ジャスパー レポートは初めてです。.jasper ファイルから情報を取得する必要があるという要件があります。そのために以下のコードを使用しています。

しかし、問題は、ローカル マシンにあるファイルを compileReport が取得せず、次のようなエラーが発生することです。

スレッド「メイン」の例外 java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:150) at 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();
    }
}

ありがとう

4

1 に答える 1

0

java.lang.NoClassDefFoundErrororは、ほとんどのClassNotFoundException場合、それが参照するクラスがクラスパスにないことを通知するはずです。この場合はorg.apache.commons.digester.Digesterです。このクラスを含む 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ファイルにある可能性があります。

于 2013-05-10T15:44:05.583 に答える