我在尝试打印报告时遇到了一个奇怪的错误。
Handler processing failed; nested exception is java.lang.VerifyError: class org.codehaus.groovy.runtime.callsite.GroovySunClassLoader$2 overrides final method visit.(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
请有人建议可以解决这个问题。
这是打印jasper报告的代码。
@RequestMapping("/report")
public String displayReport(Map<String,Object> map){
System.out.println("Hello");
String sourceFileName = "D://jasper"
+ "/report2.jrxml";
String jasperFileName = "D://jasper"
+ "/report2.jasper";
List<Project> projectList=projectService.getAllproject();
String printFileName = null;
JRBeanCollectionDataSource beanColDataSource =
new JRBeanCollectionDataSource(projectList);
try{
// 1. Add report parameters
HashMap<String, Object> parameters= new HashMap<String, Object>();
parameters.put("ReportTitle", "Project Details");
parameters.put("Author", "Prepared By Priyanka");
JasperCompileManager.compileReportToFile(sourceFileName);
printFileName = JasperFillManager.fillReportToFile(jasperFileName,
parameters, beanColDataSource);
if (printFileName != null) {
/**
* 1- export to PDF
*/
JasperExportManager.exportReportToPdfFile(printFileName,
"D://jasper/sample_report.pdf");
/**
* 2- export to HTML
*/
JasperExportManager.exportReportToHtmlFile(printFileName,
"D://jasper/sample_report.html");
/**
* 3- export to Excel sheet
*/
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.INPUT_FILE_NAME,
printFileName);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
"D://jasper/sample_report.xls");
exporter.exportReport();
}
} catch (JRException e) {
e.printStackTrace();
}
return "report";
}
堆栈跟踪如下:
SEVERE:servlet [spring]的Servlet.service()在路径[/ Project5]的上下文中引发了异常[Handler处理失败;嵌套异常是java.lang.VerifyError:class org.codehaus.groovy.runtime.callsite.GroovySunClassLoader $ 2覆盖最终方法访问。(IILjava / lang / String; Ljava / lang / String; Ljava / lang / String; [Ljava / lang / String;)V]有根本原因 java.lang.VerifyError:class org.codehaus.groovy.runtime.callsite.GroovySunClassLoader $ 2覆盖最终方法访问。(IILjava / lang / String; Ljava / lang / String; Ljava / lang / String; [Ljava / lang / String; )V at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) 在org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) 在org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 在org.codehaus.groovy.runtime.callsite.CallSiteGenerator.isCompilable(CallSiteGenerator.java:243) at org.codehaus.groovy.reflection.CachedMethod.createPojoMetaMethodSite(CachedMethod.java:239) 在org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createCachedMethodSite(PojoMetaMethodSite.java:158) 在org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createPojoMetaMethodSite(PojoMetaMethodSite.java:147) at groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:2979) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:114) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:148) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121) 在org.codehaus.groovy.ast.builder.AstBuilderTransformation.visit(AstBuilderTransformation.groovy:61) 在org.codehaus.groovy.transform.ASTTransformationVisitor $ 3.call(ASTTransformationVisitor.java:268) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:799) 在org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:464) at net.sf.jasperreports.compilers.JRGroovyCompiler.compileUnits(JRGroovyCompiler.java:109) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:201) at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:354) at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:270) at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:229) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:539) 在com.mvc.project.controller.ProjectController.displayReport(ProjectController.java:224) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) 在org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 在org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 在org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source) 在java.lang.Thread.run(未知来源)
答案 0 :(得分:1)
report2.jrxml文件标题中的language属性设置为groovy,而不是java。
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
...
language="groovy"
...>
将此更改为
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
...
language="java"
...>