Jasper reports 如何从WEB-INF/resources文件夹中读取文件?

Jasper reports 如何从WEB-INF/resources文件夹中读取文件?,jasper-reports,icefaces,Jasper Reports,Icefaces,我正在使用Icefaces进行Web应用程序开发。我希望从resources文件夹中读取一个文件,并在sessionbean中使用它 实际上,我想设置Jasper报告。我已经在类路径中设置了库。我遇到的问题是从/WEB-INF/resources/folder获取文件时。每次从SessionBean运行代码时,都会出现异常: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /resources/rep

我正在使用Icefaces进行Web应用程序开发。我希望从resources文件夹中读取一个文件,并在sessionbean中使用它

实际上,我想设置Jasper报告。我已经在类路径中设置了库。我遇到的问题是从/WEB-INF/resources/folder获取文件时。每次从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中。 请提供帮助

您正在传递相关信息 方法的URL
jaspecompilemanager.compileReportToFile
。 此方法要求将文件名作为参数,而不是URL

其他互联网论坛建议的解决方案是:

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

为什么会被否决?是因为你不知道答案吗?我不认为这个问题是离题的人们不投反对票是因为他们不知道答案,他们投反对票是因为他们认为这个问题不适合这么做。不幸的是,他们并不总是留下理由。就个人而言,我认为如果你看API文档,看到它有一个文件名,你的代码显然是以绝对路径传递的,很明显问题出在哪里,尽管我不会对此投反对票。很抱歉。。。我只是在寻找答案,因为我搜索了很多地方,但没有得到任何有效的答案。不需要道歉,只需要说为什么有些人可能会投反对票:)这是我的问题。。指定/WEB-INF/resources/文件夹中存在的文件的解决方法是什么?感谢您的回复。但是它不起作用-getservletcontext()部分。我无法在com.sun.rave.web.ui.appbase.AbstractSessionBean中获取servlet上下文。我也在使用可视化的冰面进行开发。。你能帮忙吗?有什么解决方法吗?您必须找到访问servlet请求的方法调用。它将类似于
((HttpSession)AbstractSessionBean.getExternalContext().getSession(false)).getServletContext()
,尽管我必须解决java.lang.NoClassDefFoundError:org/apache/commons/digester.SetNestedPropertiesRule。否则,文件已成功找到。。。