복붙노트

[SPRING] JasperReports : 하위 보고서를 찾을 수 없습니다.

SPRING

JasperReports : 하위 보고서를 찾을 수 없습니다.

그것은 나를 미치게합니다. 지난 시간에 하위 보고서를 추가 한 직후 보고서가 작동하지 않는 이유를 확인하려고합니다. 이미 여기, 여기, 여기 비슷한 문제를 확인하고 시도했습니다. 성공하지 못하면 서브 리포트는 같은 디렉토리에 있습니다. 정의는 다음과 같습니다.

<subreport isUsingCache="false">
                <reportElement uuid="db816b3c-a13d-440f-a6a2-f899762e61e4" x="0" y="89" width="555" height="100"/>
                <subreportParameter name="footerAddress">
                    <subreportParameterExpression><![CDATA[$P{footerAddress}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="footerManager">
                    <subreportParameterExpression><![CDATA[$P{footerManager}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="footerContact">
                    <subreportParameterExpression><![CDATA[$P{footerContact}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="footerBank">
                    <subreportParameterExpression><![CDATA[$P{footerBank}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{SUBREPORT_DIR}]]></subreportExpression>
            </subreport>

여기서 $ P {SUBREPORT_DIR}은 "/valid/path/sub.report.jasper"입니다.

여전히 오류가 발생합니다 : /valid/path/sub.report.jasper에 자원이 없습니다.

왜??

해결법

  1. ==============================

    1.첫 번째 메시지 작성자의 말 :

    첫 번째 메시지 작성자의 말 :

    여기서 $ P {SUBREPORT_DIR}은 "/valid/path/sub.report.jasper"입니다.

    $ P {SUBREPORT_DIR}은 디렉토리이지만 파일 이름은 아닙니다. 그것은 첫 번째 오류입니다.

    두 번째 : 때때로 벽옥은 하위 보고서를 찾을 수 없으며 경로가 정확합니다.

    이 문제를 해결하는 방법 :

  2. ==============================

    2.나는이 문제를 더 일찍 처리했다. 내 접근 방식은 - 나는 매개 변수에 절대 폴더를 보내고 folder_path했다. 그리고 하위 보고서 표현에서 새 파일 (($ P {folder_path} + "* .jasper")을 사용하고 있었다.이 * .jasper 파일은 "\\ inner_folder \\ *. jasper"로 대체하십시오. 그리고 이것은 완벽하게 작동했습니다.

    나는이 문제를 더 일찍 처리했다. 내 접근 방식은 - 나는 매개 변수에 절대 폴더를 보내고 folder_path했다. 그리고 하위 보고서 표현에서 새 파일 (($ P {folder_path} + "* .jasper")을 사용하고 있었다.이 * .jasper 파일은 "\\ inner_folder \\ *. jasper"로 대체하십시오. 그리고 이것은 완벽하게 작동했습니다.

  3. ==============================

    3.이것은 때때로 저에게 일어나며, 항상 일부 코드가 작동하는 이유를 결정하는 핵심 요소 인 플랫폼 OS 였고 다른 일부는 그렇지 않았습니다. 그러나 항상 일하는 것은 절대적인 참조가 아닌 상대적인 참조입니다.

    이것은 때때로 저에게 일어나며, 항상 일부 코드가 작동하는 이유를 결정하는 핵심 요소 인 플랫폼 OS 였고 다른 일부는 그렇지 않았습니다. 그러나 항상 일하는 것은 절대적인 참조가 아닌 상대적인 참조입니다.

    내 제안은 cjava의 솔루션이 작동하지 않는다면, JasperReports가 Disk에서 무엇을하는지 알아내는 것입니다. 플랫폼, * nix, Windows에 따라 JasperReports가 사용중인 경로를 찾기 위해 어떤 시스템 호출을 실행해야하는지 파악해야합니다. 필자는 이전에 작동했던 경로없는 참조를 지정했지만 일부 플랫폼에서는 검색 경로를 다르게 지정하여 보고서를 찾지 못하는 것으로 나타났습니다.

    시스템 호출 문제를 해결하는 방법에 대한 다른 질문 :

    * nix - Strace

    strace java 애플릿

    Windows - 프로세스 모니터

    Windows에서 특정 프로세스가 사용하고있는 파일을 찾으려면 어떻게합니까? 이 작업을 수행하는 소프트웨어가 있습니까?

    Mac - DTruss

    osx에 해당하는 ltrace?

    행운을 빕니다.

  4. ==============================

    4.코드에서 SUBREPORT_DIR 매개 변수를 보내보십시오. 어쩌면 그것은 실종되었다 ... maven을 사용한다면 pom.xml에서 resource directory tag를 확인하여 비교해보십시오.

    코드에서 SUBREPORT_DIR 매개 변수를 보내보십시오. 어쩌면 그것은 실종되었다 ... maven을 사용한다면 pom.xml에서 resource directory tag를 확인하여 비교해보십시오.

    params.put("SUBREPORT_DIR", "reports/report/blablaFolder/");
    
  5. from https://stackoverflow.com/questions/18656016/jasperreports-cant-locate-subreport by cc-by-sa and MIT license