2010-08-12 66 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