Я хочу показать изображение в отчете о яшме. У меня есть следующее на .jrxml:
<image>
<reportElement x="181" y="0" width="209" height="74"/>
<imageExpression class="java.lang.String"><![CDATA["logo.jpg"]]></imageExpression>
</image>
Изображение logo.jpg находится в том же каталоге, что и .jrxml. Просто говоря, что это не сработало для меня. Я немного погуглил и обнаружил, что отчет jasper рассматривает то, что я положил в .jrxml, как относительный путь к каталогу JVM, и что для его изменения мне нужно передать в качестве параметра «REPORT_FILE_RESOLVER» FileResolver, который возвращает файл. Итак, я сделал следующее в моем .java (находится там же, где и .jrxml и изображение)
FileResolver fileResolver = new FileResolver() {
@Override
public File resolveFile(String fileName) {
return new File(fileName);
}
};
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("REPORT_FILE_RESOLVER", fileResolver);
...
Который должен вернуть ожидаемый файл, но я все равно получаю
net.sf.jasperreports.engine.JRException: Error loading byte data : logo.jpg
at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:301)
at net.sf.jasperreports.engine.util.JRLoader.loadBytesFromLocation(JRLoader.java:479)
at net.sf.jasperreports.engine.JRImageRenderer.getInstance(JRImageRenderer.java:180)
...
Что я делаю не так?
Спасибо!