Java net.sf.jasperreports.engine.jr异常:未找到字节数据

Java net.sf.jasperreports.engine.jr异常:未找到字节数据,java,xml,jasper-reports,Java,Xml,Jasper Reports,我试图传递到jasper报告字符串位置的模板。所以我在模板中传递一个参数的键和值。当我的项目中有图像时,一切都正常,但我想把它放在另一个地方。是否有任何方法可以从例如属性文件中读取参数?我不知道为什么这个解决方案不起作用: 我的形象: <parameter name="imagesDir" class="java.lang.String" isForPrompting="false"/> 好的,我找到了。。。 应该是: <image isLazy="true">

我试图传递到jasper报告字符串位置的模板。所以我在模板中传递一个参数的键和值。当我的项目中有图像时,一切都正常,但我想把它放在另一个地方。是否有任何方法可以从例如属性文件中读取参数?我不知道为什么这个解决方案不起作用:

我的形象:

<parameter name="imagesDir" class="java.lang.String" isForPrompting="false"/>
好的,我找到了。。。 应该是:

<image isLazy="true">
    <reportElement key="image-1" style="PHLabel" x="0" y="0" width="160" height="33"/>
    <imageExpression class="java.lang.String"><![CDATA[$P{imagesDir}+"logo.bmp"]]></imageExpression>
</image>

我有这个问题,在我的例子中,问题是图像的路径

起初,我的想法是:

<imageExpression><![CDATA["logo.bmp"]]></imageExpression>

然后我将其替换为:

<imageExpression><![CDATA["/home/reports/logo.bmp"]]></imageExpression>


显然,这是有效的,因为我使用了绝对路径(这不是一个好方法),然后我用images文件夹的一个参数更改了静态绝对路径。

另一个解决方案为我解决了这个问题,它比上面@Marcin的回答更灵活:并指示ServletContext认为根目录的位置(在服务器升级期间我们更改了根目录)。
<imageExpression><![CDATA["logo.bmp"]]></imageExpression>
<imageExpression><![CDATA["/home/reports/logo.bmp"]]></imageExpression>