我在jasper中有一个报告,想要使用我的应用程序中的徽标(gif)(在/ src / main / resources / img中)
用于重新检索图像徽标的代码是
public void imprimir(MyReport myreport) throws Exception
{
List myReportList = new ArrayList();
File logo = new File(getClass().getClassLoader().getResource("img/myLogo.gif").getPath());
myreport.setLogo(logo);
myReportList.add(myreport);
FileInputStream fis = (FileInputStream) getClass().getClassLoader().getResourceAsStream("jasper/myreport.jasper");
// JasperReport report = JasperCompileManager.compileReport(fis);
JasperPrint print = JasperFillManager.fillReport(fis, null, new JRBeanCollectionDataSource(myReportList));
JasperExportManager.exportReportToPdfFile(print, "c:/myreport.pdf");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(print, baos);
DataSource datasource = new ByteArrayDataSource(baos.toByteArray(), "application/pdf");
Email mail = new Email();
mail.setFromLabel("xxxxxxxx@xxxxxxxx.yyy.zz");
mail.setTo("destiny@xxxxxxxx.yyy.zz");
mail.setSubject("myreport");
mail.setMessage("Mesage");
EmailService emailService = new EmailService();
emailService.sendEmail(mail, datasource);
}
但这条路径不存在。
[Server:server01] 09:40:12,492 ERROR [stderr] (default task-3) Caused by: java.io.FileNotFoundException: C:\Java\AS\wildfly-8.1.0.Final\content\MyProject.war\WEB-INF\classes\img\logo.gif
因此,看起来,Path正在被解决为不同的价值。 部署是在域模式(Clustered)中通过Wildfly 8.1 Final进行的。
我在这里缺少什么?
答案 0 :(得分:1)
您的myLogo.gif
已包含在MyProject.war
文件中。路径C:\Java\AS\wildfly-8.1.0.Final\content\MyProject.war\WEB-INF\classes\img\logo.gif
不存在。
我建议使用两种方法解决此问题。
1.从myLogo.gif
移出MyProject.war
。使用真实路径加载您的gif文件。
File logo = new File(realPath);
myreport.setLogo(logo);
2.将myreport.setLogo(logo)
方法的参数类型更改为InputStream
。
InputStream logoInputStream = getClass().getClassLoader().getResourceAsStream("img/myLogo.gif");
myreport.setLogoInputStream(logoInputStream);