使用JasperReports,Hibernate和Spring时出现奇怪的错误

时间:2014-08-01 10:04:42

标签: java jasper-reports

我在尝试打印报告时遇到了一个奇怪的错误。

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(未知来源)

1 个答案:

答案 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" 
...>