2011-10-27 43 views
0

这是我第一次在官方发行版中运行JasperReports的webapp示例。 我将\ dist和\ lib中的jar放入webapp示例中,并将webapp-sample的整个目录部署到tomcat中。 但是当我尝试使用默认的页面编译WebappReport.jrxml,我看到一个error.jsp文件,以及它让我看到以下提示:无法编译JasperReports的webapp示例

的JasperReports遇到这个错误:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 
1. scriptlets.WebappScriptlet cannot be resolved to a type 
       value = ((scriptlets.WebappScriptlet)((scriptlets.WebappScriptlet)parameter_REPORT_SCRIPTLET.getValue())).hello(); //$JR_EXPR_ID=23$ 
          <------------------------> 
2. scriptlets.WebappScriptlet cannot be resolved to a type 
       value = ((scriptlets.WebappScriptlet)((scriptlets.WebappScriptlet)parameter_REPORT_SCRIPTLET.getValue())).hello(); //$JR_EXPR_ID=23$ 
                 <------------------------> 
3. scriptlets.WebappScriptlet cannot be resolved to a type 
       value = ((scriptlets.WebappScriptlet)((scriptlets.WebappScriptlet)parameter_REPORT_SCRIPTLET.getValue())).hello(); //$JR_EXPR_ID=23$ 
          <------------------------> 
4. scriptlets.WebappScriptlet cannot be resolved to a type 
       value = ((scriptlets.WebappScriptlet)((scriptlets.WebappScriptlet)parameter_REPORT_SCRIPTLET.getValue())).hello(); //$JR_EXPR_ID=23$ 
                 <------------------------> 
5. scriptlets.WebappScriptlet cannot be resolved to a type 
       value = ((scriptlets.WebappScriptlet)((scriptlets.WebappScriptlet)parameter_REPORT_SCRIPTLET.getValue())).hello(); //$JR_EXPR_ID=23$ 
          <------------------------> 
6. scriptlets.WebappScriptlet cannot be resolved to a type 
       value = ((scriptlets.WebappScriptlet)((scriptlets.WebappScriptlet)parameter_REPORT_SCRIPTLET.getValue())).hello(); //$JR_EXPR_ID=23$ 
                 <------------------------> 
6 errors 

at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:191) 
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:212) 
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:128) 
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:87) 
at org.apache.jsp.jsp.compile_jsp._jspService(compile_jsp.java:61) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
at java.lang.Thread.run(Thread.java:619) 
+0

您是否尝试在iReport中编译此报告? –

+0

是的,但wgen我试试安捷,我修复它 –

+0

最后的评论意味着问题解决了吗? – mdahlman

回答

0

这是由于JDT编译器正在编译从缓存加载的报告(在我们的JasperServer中)的缺陷(缺少类路径中的scriptlet)。这在报表最初运行时不会发生,因为在这种情况下,JDT评估程序(而不是编译器)与类路径上的scriptlet一起使用。换句话说:

  1. 报告使用JDT评估运行,小脚本添加到类路径
  2. 报告从缓存中加载并使用JDT编译器编译,无需在类路径中的小脚本(因为JDT编译股其具有包含应用程序的类路径,与具有其自己的类路径的评估程序相反)。

快速修复是将scriptlet添加到包含应用程序的类路径中。