使用映像创建JasperReport无法在Windows Vista,7或Server 2008上创建临时文件

时间:2010-09-09 22:41:46

标签: image windows-7 jasper-reports temporary-files

在使用Windows Vista,Windows 7或Windows 2008的某些计算机上运行我们的应用程序时生成Jasper报告时出现以下错误:

  

java.lang.RuntimeException:net.sf.jasperreports.engine.JRException:javax.imageio.IIOException:无法创建输出流!   at br.com.oobj.relatorio.RRelatorioJasper.gerarJasperPrint(RRelatorioJasper.java:61)   at br.com.oobj.relatorio.RRelatorioJasper.gerarJasperPrint(RRelatorioJasper.java:44)   at br.com.oobj.cte.dacte.RGerarDacte.gerarJasperPrint(RGerarDacte.java:153)   at br.com.oobj.cte.dacte.RGerarDacte.gerarJasperPrint(RGerarDacte.java:66)   at br.com.oobj.me.impressao.GeradorDacte.gerarDAME(GeradorDacte.java:55)   在br.com.oobj.me.impressao.GeradorDameDelegator.gerarDAME(GeradorDameDelegator.java:23)   在br.com.oobj.me.impressao.ServicoImpressao.processar(ServicoImpressao.java:117)   at br.com.oobj.me.impressao.ConsumidorImpressao.novaMensagem(ConsumidorImpressao.java:71)   at br.com.oobj.util.fila.ConsumidorNotificante.run(ConsumidorNotificante.java:229)   在br.com.oobj.me.impressao.ConsumidorImpressao.run(ConsumidorImpressao.java:47)   引起:net.sf.jasperreports.engine.JRException:javax.imageio.IIOException:无法创建输出流!   at net.sf.jasperreports.engine.util.JRJdk14ImageEncoder.encode(JRJdk14ImageEncoder.java:90)   at net.sf.jasperreports.engine.util.JRAbstractImageEncoder.encode(JRAbstractImageEncoder.java:74)   at net.sf.jasperreports.engine.util.JRImageLoader.loadImageDataFromAWTImage(JRImageLoader.java:166)   at net.sf.jasperreports.engine.JRImageRenderer.getInstance(JRImageRenderer.java:207)   at net.sf.jasperreports.engine.JRImageRenderer.getInstance(JRImageRenderer.java:190)   at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:901)   at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:870)   at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275)   at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:426)   at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:424)   at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:388)   at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:249)   at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113)   at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:891)   在net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:814)   at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)   at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)   at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)   at br.com.oobj.relatorio.RRelatorioJasper.gerarJasperPrint(RRelatorioJasper.java:58)   ......还有9个   引起:javax.imageio.IIOException:无法创建输出流!   在javax.imageio.ImageIO.write(未知来源)   at net.sf.jasperreports.engine.util.JRJdk14ImageEncoder.encode(JRJdk14ImageEncoder.java:86)   ......还有27个   引起:javax.imageio.IIOException:无法创建缓存文件!   在javax.imageio.ImageIO.createImageOutputStream(未知来源)   ......还有29个   引起:java.io.IOException:系统找不到指定的路径   在java.io.WinNTFileSystem.createFileExclusively(本机方法)   在java.io.File.checkAndCreate(未知来源)   在java.io.File.createTempFile(未知来源)   在javax.imageio.stream.FileCacheImageOutputStream。(未知来源)   at com.sun.imageio.spi.OutputStreamImageOutputStreamSpi.createOutputStreamInstance(Unknown Source)   ......还有30多个

报告引用外部JPG图像。该应用程序作为Windows服务运行。我已经尝试使用管理员用户启动该服务,但没有成功。

在某些机器中,我们通过将图像重新定位到C:以外的其他驱动器来解决问题:

非常感谢你能提供任何帮助。

谢谢, Jonathas的

1 个答案:

答案 0 :(得分:1)

似乎Windows 2008对于某些与服务有关的系统指令有不同的默认值。

在用户模式下运行应用程序(即从Windows用户会话中运行)时,问题无法验证。

此外,如果我们将文件移动到安装了Windows的驱动器以外的驱动器,则不会出现此问题。

这不完全是一个解决方案(我没有确切知道要改变的系统指令),但我相信这些信息最终会有所帮助。