2011-10-27 40 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私はagianを試して、私はそれを修正します –

+0

最後のコメントは、問題が解決されたことを意味しますか? – mdahlman

答えて

0

これは、 JDTコンパイラによってキャッシュからロードされたレポートがコンパイルされているバグ(JasperServerの場合)によって、クラスパス上にスクリプトレットが存在しないためです。この場合、レポートが最初に実行されたときには発生しません。その場合、(コンパイラではなく)JDTエバリュエータがクラスパス上のスクリプトレットで使用されるからです。言い換えれば:

  1. レポートは、JDTの評価を使用して実行され、スクリプトレットは(クラスパス上のスクリプトレットせず、
  2. レポートがキャッシュからロードし、JDTコンパイラを使用してコンパイルされたクラスパスに追加されたJDTコンパイラを共有ので独自のクラスパスを持つ評価者とは対照的に、そのアプリケーションを含むクラスパス)。

すぐに解決できるのは、含まれているアプリケーションのクラスパスにスクリプトレットを追加することです。

関連する問題