2010-08-12 71 views
1

我在这个代码获得以下异常, 请你帮我,javax.imageio.IIOException:无法创建输出流! (在Java)

javax.imageio.IIOException: Can't create output stream! 

de.laures.cewolf.ChartRenderingException: Can't create output stream! 

javax.servlet.jsp.JspException: Can't create output stream! 

at de.laures.cewolf.taglib.tags.ChartMapTag.doStartTag(ChartMapTag.java:117) 

代码如下

try { 
    Dataset dataset = PageUtils.getDataset(chartId, pageContext); 
    Writer out = pageContext.getOut(); 
    final boolean isIE = BrowserDetection.isIE((HttpServletRequest) pageContext.getRequest()); 
    if (hasToolTips()) { 
    enableToolTips(out, isIE); 
    } 
    out.write("<MAP name=\"" + chartId + "\">\n"); 
    ChartRenderingInfo info = (ChartRenderingInfo) root.getRenderingInfo(); 
    Iterator entities = info.getEntityCollection().iterator(); 
    while (entities.hasNext()) { 
    ChartEntity ce = (ChartEntity) entities.next(); 
    out.write("\n<AREA shape=\"" + ce.getShapeType() + "\" "); 
    out.write("COORDS=\"" + ce.getShapeCoords() + "\" "); 
      if (ce instanceof XYItemEntity) 
      { 
      dataset = ((XYItemEntity)ce).getDataset(); 
      } 
    if (!(ce instanceof LegendItemEntity)) { 
    if (hasToolTips()) { 
     writeOutToolTip(dataset, out, isIE, ce); 
    } 
    if (hasLinks()) { 
     writeOutLink(linkGenerator, dataset, out, ce); 
    } 
    } 
    out.write(">"); 
    } 

回答

2

这是最有可能是用户访问权限的问题。用户(服务器?)需要对输出文件具有修改权限。某些图表渲染器在临时文件夹中的/中创建文件,以便用户/服务器需要在该文件夹上创建和修改文件的权限。

我认为,完整的堆栈跟踪包括一个基础IOException,并详细描述了原因(如“拒绝访问”等)。

编辑

要解决此问题,请在调试器应用程序和设置一个断点上javax.imageio.IIOException。然后,当应用程序在该断点处停止时,查看变量(您可能必须向下移动堆栈跟踪)以查找无法用于写入的文件的名称。然后查看文件系统并检查,如果文件或封装的foder是写保护的。

+0

堆栈跟踪不包括,我使用的是Oracle 10服务器,更多的有用信息,可以请你告诉我怎么给访问权限,并在那里将是这个临时文件夹 – manoj 2010-08-12 06:26:51

+0

你好,你能告诉我关于访问权限,以及我必须给予访问权限吗? – manoj 2010-08-16 07:12:49

2

我是cewolf项目的维护者,我刚刚上传了一个可以解决此问题的新版本(1.1.1)。给它一个旋转,让我们知道它是如何工作的。如果问题仍然存在,请转到JavaRanch上的“其他开源项目”论坛;这就是我支持cewolf的地方。

1

如果您在Apache主目录下未找到临时目录时使用Apache,则会显示此错误。

javax.imageio.IIOException : Can't create output stream! 

例如:C:\ Apache的\ TEMP

+0

谢谢!有用。 – Naitree 2015-06-22 14:51:00