2011-10-27 44 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添加到包含應用程序的類路徑中。