При создании JasperReport с изображением не удается создать временный файл в Windows Vista, 7 или Server 2008 - PullRequest
1 голос
/ 10 сентября 2010

Мы получаем следующую ошибку при создании отчета Jasper при запуске нашего приложения на некоторых компьютерах с Windows Vista, Windows 7 или Windows 2008:

java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: javax.imageio.IIOException: Не удается создать поток вывода!по адресу br.com.oobj.relatorio.RRelatorioJasper.gerarJasperPrint (RRelatorioJasper.java:61) по адресу br.com.oobj.relatorio.RRelatorioJasper.gerarJasperPrint (RRelatorioJasper.java:44) по адресу br.com.oodjte.gerarJasperPrint (RGerarDacte.java:153) на br.com.oobj.cte.dacte.RGerarDacte.gerarJasperPrint (RGerarDacte.java:66) на br.com.oobj.me.impressao.GeradorDacte.jrarDacte) на br.com.oobj.me.impressao.GeradorDameDelegator.gerarDAME (GeradorDameDelegator.java:23) на br.com.oobj.me.impressao.ServicoImpressao.processar (ServicoImpressao.java:117) на br.com.oobj.me.impressao.ConsumidorImpressao.novaMensagem (ConsumidorImpressao.java:71) на br.com.oobj.util.fila.ConsumidorNotificante.run (ConsumidorNotificante.java:229) на сайте br.com.oobj.me.impressaoumress (Consumer).ConsumidorImpressao.java:47) Причина: net.sf.jasperreports.engine.JRException: javax.imageio.IIOException: Не удается создать поток вывода!в net.sf.jasperreports.engine.util.JRJdk14ImageEncoder.encode (JRJdk14ImageEncoder.java:90) в net.sf.jasperreports.engine.util.JRAbstractImageEncoder.encode (JRAbstractImageEncoder.java.java.74: 74).util.) в net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage (JRFillImage.java:901) в net.sf.jasperreports.engine.fill.JRFillImage.evaluate (JRFillImage.java:870) в net.sf.jasperreports.engine.fill.JRVerticalFiller.java:424) в net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader (JRVerticalFiller.java:388) в net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart (JRVerticalFiller.java:249) в net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport (JRVerticalFiller.java:113) в net.sf.jasperreports.fill.JRBaseFiller.fill (JRBaseFiller.java:891) в net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:814) в net.sf.jasperreports.engine.fill.JRFiller.fillReport (JRFiller.Java: 89) на net.sf.jasperreports.engine.JasperFillManager.fillReport (JasperFillManager.java:601) на net.sf.jasperreports.engine.JasperFillManager.fillReport (JasperFillManager.java:517) на br.com.iobj.RRelatorioJasper.gerarJasperPrint (RRelatorioJasper.java:58) ... ... еще 9 Причина: javax.imageio.IIOException: Не удается создать выходной поток!на javax.imageio.ImageIO.write (Неизвестный источник) на net.sf.jasperreports.engine.util.JRJdk14ImageEncoder.encode (JRJdk14ImageEncoder.java:86) ... еще 27 причин: javax.imageio.IIOException: не можетсоздать файл кэша!at javax.imageio.ImageIO.createImageOutputStream (Неизвестный источник) ... еще 29 Причин: java.io.IOException: системе не удается найти путь, указанный в java.io.WinNTFileSystem.createFileExclusively (собственный метод) в java.io.File.checkAndCreate (Неизвестный источник) по адресу java.io.File.createTempFile (Неизвестный источник) по адресу javax.imageio.stream.FileCacheImageOutputStream. (Неизвестный источник) по адресу com.sun.imageio.spi.OutputStreamImageOutputStreamSpi.creamateOut (Unknown Source) UnputЕще 30

В отчете содержится ссылка на внешнее изображение JPG.Приложение работает как служба Windows.Я уже пытался запустить службу с правами администратора, но безуспешно.

На некоторых машинах мы решили проблему, переместив образ на другой диск, отличный от C:

Буду очень признателен за любую помощь, которую вы можете принести.

Спасибо, Jonathas

1 Ответ

1 голос
/ 19 января 2011

Похоже, что Windows 2008 имеет разные значения по умолчанию для некоторых системных директив, касающихся служб.

При запуске приложения в пользовательском режиме (т. Е. При запуске из пользовательского сеанса Windows) проблема не проверяется.

Кроме того, если мы переместили файл на диск, отличный от диска, на котором установлена ​​Windows, проблема не возникнет.

Это не совсем решение (я не выяснил, какую именно системную директиву следует изменить), но я верю, что эта информация может в конечном итоге помочь.

...