JasperReports渲染报表文件时候,读取图片报错:Byte data not found at:xxx.png.\r\n\tat

本文主要是介绍JasperReports渲染报表文件时候,读取图片报错:Byte data not found at:xxx.png.\r\n\tat,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录【知识星球】

1.1、错误描述

1.2、解决方案


1.1、错误描述

最近在工作中,使用JasperReports报表比较多一些,有次线上环境里面运行报错,查看报错日志,如下所示:

net.sf.jasperreports.engine.JRException: Byte data not found at: xxxx.png.\r\n\tat 
net.sf.jasperreports.repo.RepositoryUtil.getBytesFromLocation(RepositoryUtil.java:215)\r\n\tat 
net.sf.jasperreports.renderers.util.RendererUtil.getNonLazyRenderable(RendererUtil.java:179)\r\n\tat 
net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:512)\r\n\tat 
net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:437)\r\n\tat 
net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:383)\r\n\tat 
net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:548)\r\n\tat 
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2613)\r\n\tat 
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:836)\r\n\tat 
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:275)\r\n\tat 
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:119)\r\n\tat 
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:622)\r\n\tat 
net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:433)\r\n\tat 
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:162)\r\n\tat 
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:145)\r\n\tat 
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:758)\r\n\tat 
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:1074)\r\n\tat 

从报错日志里面,可以大概看出是在调用fillReport()方法,填充报表数据的时候,读取不到xxx.png图片所导致的报错。于是我就是使用Jasper Studio报表工具打开jasper模板文件,然后查看里面是否有使用Image图片组件的地方,果然是有使用Image图片组件。

一开始我以为是图片名称使用了中文所导致的,于是我就先修改图片名称为英文字母,将重新编译之后的jasper模板文件发到服务器上运行,发现还是一样的报错,到这里,基本上就可以排除是中文名称的问题了。

既然不是图片名称的问题,那就还有一种情况了,那就是图片的路径写的不对,于是我查看图片的路径地址,居然是直接写了一个图片名称,我就去服务器上查看图片保存在哪个目录下,发现图片是保存在【report/xxx/xxx.png】的路径,改成这个路径之后,重新运行就不报错了。

最终,找到的原因是:jasper模板文件中使用了Image图片组件,但是这个图片的路径地址不完整,直接写了一个图片名称,在服务器上运行时候,需要写完整的路径地址。

1.2、解决方案

修改jasper模板文件中的图片路径地址,要加上完整的路径,例如:你的报表模板是放在服务器上的report/demo目录下面,并且图片也放在这个目录下,那么你就要写完整的图片路径地址:"report/demo/java.png"。

到此,JasperReports渲染报表文件时候,读取图片报错问题就解决啦。

这篇关于JasperReports渲染报表文件时候,读取图片报错:Byte data not found at:xxx.png.\r\n\tat的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652888

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja