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

相关文章

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

Python报错ModuleNotFoundError的10种解决方案

《Python报错ModuleNotFoundError的10种解决方案》在Python开发中,ModuleNotFoundError是最常见的运行时错误之一,通常由模块路径配置错误、依赖缺失或命名冲... 目录一、常见错误场景与原因分析二、10种解决方案与代码示例1. 检查并安装缺失模块2. 动态添加模块

Java实现图片淡入淡出效果

《Java实现图片淡入淡出效果》在现代图形用户界面和游戏开发中,**图片淡入淡出(FadeIn/Out)**是一种常见且实用的视觉过渡效果,它可以用于启动画面、场景切换、轮播图、提示框弹出等场景,通过... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

将图片导入Python的turtle库的详细过程

《将图片导入Python的turtle库的详细过程》在Python编程的世界里,turtle库以其简单易用、图形化交互的特点,深受初学者喜爱,随着项目的复杂度增加,仅仅依靠线条和颜色来绘制图形可能已经... 目录开篇引言正文剖析1. 理解基础:Turtle库的工作原理2. 图片格式与支持3. 实现步骤详解第

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最