2010-08-03 3 views
0

Java에서 바로 하위 보고서를 컴파일하려고합니다. 다음과 같이 MAIN 보고서에 하위 보고서 식을 배치했습니다. 다음과 같이주 보고서가 ireport에서 실행되는 동안 하위 보고서를 컴파일하는 방법은 무엇입니까?

<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[SubReportCompiler.getCompiledReport("reportId")]]></subreportExpression>

내 subreportcompiler 코드는 다음과 같습니다

공용 클래스 SubReportCompiler {

private static final String JR_XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
    + "<!DOCTYPE jasperReport PUBLIC \"-//JasperReports//DTD Report Design//EN\" \"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd\">"; 


public static JasperReport getCompiledReport(String reportId) 
{ 

    Report report = Report.getReportObject(reportId, applicationId); 

    String jasperXML=JR_XML_HEADER + report.getJASPERXML(); 
    InputStream jrXMLStream = new ByteArrayInputStream(jasperXML.getBytes()); 
    JasperReport jReport; 

    try { 
     jReport = JasperCompileManager.compileReport(jrXMLStream); 
    } catch (JRException e) { 
     throw new ReportException(e.getMessage(), e); 
    } 
    catch (Exception e) 
    { 
     throw new ReportException(e.getMessage(), e); 
    } 

    return jReport; 
} 

}

나는 자바에서 주 보고서를 실행하기 위해 노력하고있다. 다음과 같은 오류가 발생합니다.

(java.lang.String의) 그러한 특성 : 클래스 SubReportCompiler : report2_1280833699753_269232

내가 등록 정보를 등록해야합니까? 어떻게 기본 보고서의 실행 중에 Java에서 비행에 하위 보고서를 컴파일하려면?

답변

1

여기서 SubReportCompiler 클래스는? 애플리케이션 Java 패키지의 어딘가에 배치되어 있습니까? 그렇다면, 당신은 JRXML에 정규화 된 클래스 이름을 지정해야합니다 :

<subreportExpression class="net.sf.jasperreports.engine.JasperReport"> 
<![CDATA[mypackage.SubReportCompiler 
.getCompiledReport("reportId")]]></subreportExpression>

이 패키지 이름으로 위의 코드에서 "myPackage에"를 교체합니다.

+0

그것은 작동합니다 ... 감사합니다 안드레이 ... :) – Jagadesh

관련 문제