net.sf.jasperreports.engine.JRException:找不到字节数据

Mar*_*bel 2 java xml jasper-reports

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

我的形象:

<parameter name="imagesDir" class="java.lang.String" isForPrompting="false"/>
Run Code Online (Sandbox Code Playgroud)

...

<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>
Run Code Online (Sandbox Code Playgroud)

错误:

Error during exporting report statement_account_10 to PDF.
net.sf.jasperreports.engine.JRException: Byte data not found at : 
((java.lang.String)parameter_imagesDir.getValue())logo.bmp
Run Code Online (Sandbox Code Playgroud)

Mar*_*bel 5

好的,我找到了...应该是:

<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>
Run Code Online (Sandbox Code Playgroud)


Cri*_*aga 5

我遇到了这个问题,就我而言,问题是图像的路径。

最初我有类似的东西:

<imageExpression><![CDATA["logo.bmp"]]></imageExpression>
Run Code Online (Sandbox Code Playgroud)

然后我将其替换为:

<imageExpression><![CDATA["/home/reports/logo.bmp"]]></imageExpression>
Run Code Online (Sandbox Code Playgroud)

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