2011-10-03 81 views
0

我正在使用Icefaces進行web應用程序開發。我希望從resources文件夾中讀取一個文件並在sessionbean中使用它。如何從WEB-INF/resources文件夾中讀取文件?

其實我想設置賈斯珀報告。我已經在類路徑中設置了庫。我得到的問題是從/ WEB-INF/resources /文件夾中獲取文件。每次我從運行的SessionBean的代碼,我得到異常:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /resources/reports/myreport.jrxml (No such file or directory) 

我使用的代碼是:

public void generateReport() { 
    try { 
      JasperCompileManager.compileReportToFile(
        "/resources/reports/myreport.jrxml", 
        "/resources/reports/myreport.jasper"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

上面的代碼中的SessionBean。 Plz幫助

+1

爲什麼投下來?是因爲你不知道答案嗎?我不認爲這個問題是脫離主題的。 – venomrld

+1

人們不會因爲他們不知道答案而倒下,因爲他們不認爲這個問題與SO很好地匹配。不幸的是,他們並不總是有理由。就我個人而言,我認爲如果你看一下API文檔,並看到它需要一個文件名,並且你的代碼清楚地通過了絕對路徑,那麼問題顯而易見,儘管我不會爲此付出沉重的代價。 –

+0

對不起,我只是尋求一個答案,因爲我在很多地方搜索,並沒有得到任何工作的答案。 – venomrld

回答

1

您正將相對的 網址傳遞給方法JasperCompileManager.compileReportToFile。 此方法需要文件名作爲參數,而不是URL。

該解決方案在其他網絡論壇建議是:

JasperCompileManager.compileReportToFile(
    getServletContext().getRealPath(xmlFile), 
    getServletContext().getRealPath(compiledFile)); 
+0

這是我的問題。什麼是解決方法來指定存在於/ WEB-INF /資源/文件夾中的文件? – venomrld

+0

感謝您的回覆。但它不起作用 - 'getservletcontext()'部分。我無法獲取com.sun.rave.web.ui.appbase.AbstractSessionBean中的servlet上下文。此外,我正在使用Visual Icefaces進行開發.. Plz可以幫助你嗎?任何解決方法? – venomrld

+1

您必須找到訪問servlet請求的方法調用。它會像 '((HttpSession)AbstractSessionBean.getExternalContext()。getSession(false))。getServletContext()' –

相關問題