JRRuntimeException:net.sf.jasperreports.engine.JRException:从URL打开输入流时出错

时间:2019-07-07 08:29:13

标签: java spring-boot jasper-reports

更新
我看到了那些“重复”的答案,并且也接受了。我尝试了这些方法,但对我的问题没有帮助。

因此,为解决此问题,我使用了一个外部资源路径,该路径指向我的.jrxm(用于子​​报表的.jasper)文件。现在解决了。

此问题不是Jasper: error opening input stream from urlWarning while Running report: Found two components for namespace的重复。

在我的碧玉报告中,有几个子报告将有条件地打印。

在本地运行项目时,我可以下载并查看报告,而不会出现错误。但是当在远程服务器上以.war文件的形式运行时,会出现此错误:

警告

  

找到了命名空间的两个组成部分   http://jasperreports.sourceforge.net/jasperreports/components

错误:

Caused by: net.sf.jasperreports.engine.JRException: Error opening input stream from URL : file:/opt/tigerhrm/tigerhrm-client/target/tigerhrmclient-beta-1.3.0.war!/WEB-INF/classes!/report-templates/employee-details/empWiseContactReport.jasper
        at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:348)
        at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:132)
        ... 80 more
Caused by: java.io.FileNotFoundException: /opt/tigerhrm/tigerhrm-client/target/tigerhrmclient-beta-1.3.0.war!/WEB-INF/classes!/report-templates/employee-details/empWiseContactReport.jasper (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)

我正在从控制器设置这样的文件路径:

 String jasperResourcePath = request.getServletContext().getRealPath("/WEB-INF/");
 InputStream reportInputStream = getClass().getClassLoader().getResourceAsStream("report-templates/attendance.jrxml");
  

//请注意,所有子报表都直接从jasper链接到   主报告即   <subreportExpression><![CDATA[$P{reportLocation} + "empWiseContactReport.jasper"]]></subreportExpression>

项目结构:

Project Structure

在我的.war文件中,我已使用如下所示的java-decompiler检查了jasper文件路径:

path in war file:

因此,尽管该路径在.war文件中正确显示,但为什么会出现此错误?任何建议都将受到欢迎。

0 个答案:

没有答案