0

JRPrint オブジェクトを取得しようとしているので、コードは次のとおりです。

import java.io.File;

import net.sf.jasperreports.engine.*;

public class TestClass {
 protected static JasperPrint jasperPrint;
 static JasperReport jasperReport;
 protected static JasperReportsContext jasperReportsContext;

 public static void main(String[] args) {
String fileName = "/home/amira/Desktop/Map/testReports/test/textreport.jasper";
boolean isXMLFile = false;

if (!isXMLFile && fileName.endsWith(".jrxml"))
{
    isXMLFile = true;
}

try
{
  loadReportJrprint(fileName, isXMLFile, DefaultJasperReportsContext.getInstance());
}
catch (JRException e)
{

    System.err.println("Error viewing report design."+ e);

    System.exit(1);
}

try {
  JasperExportManager.exportReportToPdfFile(fileName);
} catch (JRException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

 }


protected static void loadReportJrprint(String fileName, boolean isXmlReport, JasperReportsContext jasperReportsContext) throws JRException
{
    if (isXmlReport)
    {
      jasperPrint = JRPrintXmlLoader.loadFromFile(jasperReportsContext, fileName);
      System.out.println(jasperPrint.getName());

    }
    else
    {
      jasperPrint = (JasperPrint)JRLoader.loadObjectFromFile(fileName);
    }

}
}

しかし、私はこのエラーが発生しています:

Exception in thread "main" java.lang.ClassCastException: net.sf.jasperreports.engine.JasperReport cannot be cast to net.sf.jasperreports.engine.JasperPrint
at TestClass.loadReportJrprint(TestClass.java:80)
at TestClass.main(TestClass.java:50)
4

1 に答える 1

3

.jasperファイルは単にコンパイルされた.jrxmlものであるため、取得しているJasperReportのはコンパイルされたテンプレートを記述するオブジェクトです。JasperPrint表示またはエクスポートの準備が整ったドキュメントを記述するオブジェクトを取得するには、まずレポートにJasperFillManager.fillメソッドの 1 つを入力する必要があります。JasperFillManager の javadoc を参照してください。

于 2013-07-22T21:43:45.617 に答える