Jasper报表图片路径

4
我希望在我的Jasper报告和Swing应用程序中插入图像,所有图像都在一个包中。我想为Jasper报告设置图像路径。也就是说,设置项目图像的路径。当整个项目位置更改时,会出现未找到图像的异常。请告诉我如何设置图像路径。
项目结构: MyProject |-源包
在源包下: |-Images //我的图片在这里 |-Reports //我的Jasper报告所在的地方 |-MyJFrames

你能添加更多细节,例如你的项目结构和异常吗? - r0ast3d
3个回答

7
您没有提供太多细节,但我遇到了与Jasper Report相关的绝对/相对路径问题类似的问题。 众所周知,Jasper Report存在一个“不适”或者说一个错误(如果你想这么说的话),即不能设置或使用相对路径来访问项目资源(子报表、图片等),特别是如果使用IREPORT设计工具编译报表时更为明显。
我正在使用Jasper Report和IREPORT 4.1.1进行开发,每次将JRXML编译成.jasper文件时,我的路径都是绝对的。当整个项目移动到另一台机器上时,这会造成“大混乱”。为了使用相对路径来访问我的报表,我必须通过编程手段即在我的Java应用程序中来编译报表。简而言之,我正在使用的Java实用方法读取JRXML文件,并用相对路径替换绝对路径,然后编译报表。
请查看此论坛,其中有一些不同的答案可供参考。

http://forums.devshed.com/java-help-9/relative-path-for-subreport-in-jasperreport-309313.html


我在我的Swing应用程序中尝试了所有这些示例。当项目在NetBeans中运行时,它可以正常工作。但是当运行.jar文件时,会出现异常net.sf.jasperreports.engine.JRException: Byte data not found at : C:\Users\Dhanushka\file:\D:\Projects\MyBizProjects\fin\dist\SSM.jar!\Reports\background.png。我还尝试发送绝对路径,但没有成功。请问有人能告诉我如何在Swing应用程序中解决这个问题吗? - Débora
1
@Aash 试着将图像文件夹放在你的类路径上。这里描述的方式是:http://www.coderanch.com/t/63485/open-source/Referencing-image-Jasper-Report - Mechkov
谢谢,但在我的Swing应用程序中,我的图像可能在哪里?如http://forums.devshed.com/java-help-9/relative-path-for-subreport-in-jasperreport-309313.html所述,以及其第一个解决方案,我将我的图像放在与.jasper位于同一文件夹中,但没有起作用。我是新手。你能告诉我更多吗? - Débora
你的报表是否在IDE之外运行?如果是的话,JRXML和.jasper文件夹在类路径上。你可以首先把图片放在那里。 - Mechkov
是的,它们可以运行。之前我把图片放在与.jasper文件同一个文件夹中。当使用NetBeans运行时,一切正常。但是当我只运行jar文件时,它就无法工作了。(之前我尝试将图片去掉,只保留文本...它可以在没有IDE的情况下工作) - Débora
嗯,那么您需要检查代码中使用的路径,或更具体地说,指示图像位置的路径。这些路径必须是相对路径,而不是绝对路径。希望这可以帮助您! - Mechkov

2

我也遇到了和你一样的问题。为了解决这个问题,使用硬编码路径值。您必须创建一个参数,将您的图像位置传递给该参数,然后在图像表达式中使用此参数。 我在这篇文章中找到了解决方案。


0

需要图像和子报表路径。 我使用默认提示符中的./来从任何地方工作,并将所有内容保存在单个文件夹中。 如果不同元素的位置不同,则必须通过参数部分传递SUBREPORT_DIR所需的路径,如上所述。 请也检查他的链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接