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

相关文章

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

Python脚本实现图片文件批量命名

《Python脚本实现图片文件批量命名》这篇文章主要为大家详细介绍了一个用python第三方库pillow写的批量处理图片命名的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言源码批量处理图片尺寸脚本源码GUI界面源码打包成.exe可执行文件前言本文介绍一个用python第三方库pi

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解