这是我第一次在官方发行版中运行JasperReports的webapp示例。 我将jar中的\ dist和\ lib放入webapp示例中,并将webapp-sample的整个目录部署到tomcat中。 但是当我尝试使用默认页面来编译WebappReport.jrxml时,我看到了一个error.jsp,它显示了以下提示:
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 :(得分:0)
这是由于一个错误(在我们的例子中是JasperServer),JDT编译器正在编译从缓存加载的报告缺少类路径上的scriptlet。最初运行报表时不会发生这种情况,因为在这种情况下,JDT评估程序(而不是编译器)与类路径上的scriptlet一起使用。换句话说:
快速解决方法是将scriptlet添加到包含应用程序的类路径中。