2011-10-03 145 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()' –

相关问题