我在jasper studio 6.5.1中运行报表时遇到两个奇怪的问题
1)我已经在预览之前保存了文件,但是当我在jasper studio 6.5.1中预览时,文件选项卡显示“ *”,这意味着在预览时修改了文件,我比较了预览前后的.jrxml,以下内容预览后删除该行
<property name="ireport.jasperserver.report.resource" value="/reports/RPT0044B_files/main_jrxml"/>
2)我有一个子文件名为RPT0044B_CtInfo.jrxml的子报表与主报表位于同一文件夹中,子报表表示为
<subreportExpression><![CDATA["RPT0044B_CtInfo.jasper"]]></subreportExpression>
在窗口浏览器中,我可以看到“ RPT0044B_CtInfo.jasper与它的主报告位于同一文件夹中,但是预览时出错
net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRException:在以下位置找不到资源 RPT0044B_CtInfo.jasper。在 com.jaspersoft.studio.editor.preview.view.control.ReportController.fillReport(ReportController.java:550) 在 com.jaspersoft.studio.editor.preview.view.control.ReportController.access $ 16(ReportController.java:525) 在 com.jaspersoft.studio.editor.preview.view.control.ReportController $ 1.run(ReportController.java:420) 在org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)上引起 创建人:net.sf.jasperreports.engine.JRException:在以下位置找不到资源 RPT0044B_CtInfo.jasper。在 net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:153) 在 net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:112) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.loadReport(JRFillSubreport.java:402) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:369) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:431) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:345) 在 net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:383) 在 net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:533) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2549) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillGroupHeader(JRVerticalFiller.java:641) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillGroupHeaders(JRVerticalFiller.java:538) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:250) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:99) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:609) 在 net.sf.jasperreports.engine.fill.BaseFillHandle $ ReportFill.run(BaseFillHandle.java:123) 在java.lang.Thread.run(Thread.java:748)
为什么会这样?
修改
我发现子报表中存在一些编译错误,将其修复后可以立即预览主报表和子报表。但是我发现子报表表达式有时会改变
<subreportExpression><![CDATA["RPT0044B_CtInfo.jasper"]]></subreportExpression>
部署到jasperserver后,它变为
repo:RPT0044B_CtInfo.jrxml
但是那不知道在什么情况下,它会变回
<subreportExpression><![CDATA["RPT0044B_CtInfo.jasper"]]></subreportExpression>
还有
<property name="ireport.jasperserver.report.resource" value="/reports/RPT0044B_files/main_jrxml"/>
有时上述代码会自动添加,但有时会自动删除,为什么?