3

Java 6Dynamic Web Module 2.4Tomcat 5.5、およびMySQL 5.5を使用して、 Java EEアプリケーションに取り組んでいます。

iReportで設計されたJRレポートを使用しています。それらはすべて適切に機能しますが、1つだけです。奇妙なことに、このレポートは以前は正常に機能していましたが、コードは何も変更していませんでした… (構成の問題?)。

レポートを実行すると、エラーは次のようになります。

org.apache.jasper.JasperException: getOutputStream() has already been called for this response
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:407)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

そして、コンソールはこれを言います:

error generando informe Unkown print order 0.
net.sf.jasperreports.engine.JRRuntimeException: Unkown print order 0.
    at net.sf.jasperreports.engine.fill.JRFillSubreport.initSubreportFiller(JRFillSubreport.java:390)
    at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:359)
    at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:260)
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275)
    at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:426)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1380)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:692)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:888)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:810)
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
    at com.tsystems.web.ModuloInformes.InformesNuevos.InformeGestion.Actions.InformeGestionAction.generarReporte(InformeGestionAction.java:1655)
    at com.tsystems.web.ModuloInformes.InformesNuevos.InformeGestion.Actions.InformeGestionAction.generarInformeGestion(InformeGestionAction.java:222)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at com.tsystems.web.common.FiltroSeguridad.doFilter(FiltroSeguridad.java:79)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)

レポートを実行するアクション (Java メソッド) は次のとおりです。

    private void generarReporte(List info, InformeGestionFormBean gestionBean, HttpServletRequest request, HttpServletResponse response, String descripDispo) {
        try {
. . . 
            InputStream is = null;
            String header = "";
            is = informeGestionAction.class.getClassLoader().getResourceAsStream(ruta + "InformeCuadroGestion.jrxml");          

            header = "attachment; filename=\"InformeCuadroGestion";

            JRExporter exporter = null;
            JasperReport reporte = JasperCompileManager.compileReport(is);          
            JasperPrint jasperPrint;
            JRBeanCollectionDataSource datos = new JRBeanCollectionDataSource(info);

            jasperPrint = JasperFillManager.fillReport(reporte, parametros, datos);

JasperFillManager.fillReportが呼び出されたときにエラーが発生します。

レポートの XML コードは次のとおりです。

<field name="bloqueInforme1" class="java.util.List"/>
<subreport  isUsingCache="true">
<reportElement  x="0"   y="6"   width="782"height="10" key="subreport-1"positionType="Float"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{bloqueInforme1})]]></dataSourceExpression>    
<subreportExpression  class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "PDFInformeCuadroGestionSub1.jasper"]]></subreportExpression>
</subreport>
</jasperReport>

Java コード中はbloqueinforme1の値に従いました。bloqueinforme1は、レポートの情報を含むリストを含むリストであり、値が正しいことがわかりました。エラーは、メイン レポートが使用するサブレポートにあるようです。

bloqueinforme1の一部であるフィールド (例Item )に注目してきました。Item 値を正しく出力して取得できますが、 Itemのみを使用してレポートを実行すると、レポートにItemが見つからないと表示されます。

エラーの原因はわかりません。おそらくリストリストです(サブリストが見つかりません)。または構成の問題 (動的モジュール3.0から2.4に変更する必要がありました)。

お願いします、私は必死です!手伝って頂けますか?


大変申し訳ございません!私の最初の投稿のエラーは、最初のエラーではありませんでした。最初のエラーは次のとおりです。

Could not load object from location : ..\..\iReport\PDFInformeCuadroGestionSub1.jasper
    net.sf.jasperreports.engine.JRException: Could not load object from location : ..\..\iReport\PDFInformeCuadroGestionSub1.jasper
        at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:271)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:311)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:260)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275)

正常に動作しているという報告が多数あります。失敗する唯一のものは、サブレポートを持つ唯一のものです。レポート (サブレポートを含む) を iReport でコンパイルすると、問題なくコンパイルされるので、コンパイルの問題ではないと思います。私たちのアプリは、実行時に .japer ファイルを生成します。このレポートは以前は正常に機能していましたが、現在は... レポートとサブレポートを生成する場所を指定するためにパラメーターとして使用するパス、つまり .jasper ファイルは、../../iReport という相対パスです。次のような絶対パスを試しましたが、このパスを試すと:

C:/Documents and Settings/Administrador/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/phnemos_ph/iReport/

次のエラーが表示されます。

net.sf.jasperreports.engine.JRException: java.net.MalformedURLException

私は数週間前からこの問題に取り組んでいます。助けが必要です。あなたが教えてくれることはすべて素晴らしいことです。どうもありがとうございました!!

4

2 に答える 2

0

こんにちは。すべてのサポートに感謝します。

大事なことを報告したい。jrxml ファイルのヘッダーを次のように変更すると:

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"

私は再び得るUnknown print order 0

どうもありがとうございました

于 2012-09-12T09:14:03.173 に答える
0

私が感じる問題は、 $P{SUBREPORT_DIR} 変数が原因である可能性があります。sub-report.jasper ファイルを <"DATA_SOURCE",jasperreport file> として、fill manager.fillreport の 2 番目のパラメーターのハッシュマップとして渡してみませんか。メイン レポートにパラメーター フィールドを DATA_SOURCE として作成します。あなたのデータソース式は問題ないようです。

于 2012-09-07T11:04:34.087 に答える