2015-08-20 28 views
0

使用JasperCompileManager.compileReport(myReport)時出現問題;當在Tomcat8中部署簡單的Spring MVC應用程序時。在部署到Tomcat時編譯Jasper報告8

包括以下依賴性:

....Spring Dependencies 4.1.6 Release... 

<dependency> 
    <groupId>tomcat</groupId> 
    <artifactId>jasper-compiler-jdt</artifactId> 
    <version>5.5.15</version> 
</dependency> 
<dependency> 
    <groupId>net.sf.jasperreports</groupId> 
    <artifactId>jasperreports</artifactId> 
    <version>5.6.1</version> 
</dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 

我有一個控制器端點調用一個服務類下面的代碼。 (該代碼通過單位&集成測試的web應用程序的外部。)

public JasperReport getJasperReport(String filePath) 
{ 
    try { 
     //  File f = new File(filePath); 
     File tmpFile = new File("C:\\myReport.jrxml"); 
     return fromFile(tmpFile); 
    } catch (JRException ex) { 
     log.error(MyAppService.class.getName(),ex); 
    } 
    return null; 
} 


private JasperReport fromFile(File f) throws JRException { 
    JasperDesign jd; 
    JasperReport jr = null; 
    jd = JRXmlLoader.load(f); 
    jr = JasperCompileManager.compileReport(jd); 
    return jr; 
} 

收到以下異常主叫端點時。

java.lang.ArrayIndexOutOfBoundsException: -2 
    at org.eclipse.jdt.internal.compiler.parser.Parser.consumeBinaryExpression(Parser.java:1325) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:5961) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8491) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8656) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8621) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7420) 
    at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:289) 
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:315) 
    at net.sf.jasperreports.engine.design.JRJdtCompiler.compileUnits(JRJdtCompiler.java:167) 
    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.compileReport(JasperCompileManager.java:614) 
    at com.mvcapp.web.controller.MvcAppAccessController.fromFile(MvcAppAccessController.java:190) 
    at com.mvcapp.web.controller.MvcAppAccessController.convertFileToByteArray(MvcAppAccessController.java:168) 
    at com.mvcapp.web.controller.MvcAppAccessController.uploadFileHandler(MvcAppAccessController.java:147) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2407) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2396) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
20-Aug-2015 12:12:02.850 SEVERE [http-apr-8080-exec-12] com.mvcapp.web.controller.MvcAppAccessController.convertFileToByteArray null 
net.sf.jasperreports.engine.JRException: Error compiling report design. 
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:242) 
    at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:354) 
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:614) 
    at com.mvcapp.web.controller.MvcAppAccessController.fromFile(MvcAppAccessController.java:190) 
    at com.mvcapp.web.controller.MvcAppAccessController.convertFileToByteArray(MvcAppAccessController.java:168) 
    at com.mvcapp.web.controller.MvcAppAccessController.uploadFileHandler(MvcAppAccessController.java:147) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2407) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2396) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ArrayIndexOutOfBoundsException: -2 
    at org.eclipse.jdt.internal.compiler.parser.Parser.consumeBinaryExpression(Parser.java:1325) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:5961) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8491) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8656) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8621) 
    at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7420) 
    at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:289) 
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:315) 
    at net.sf.jasperreports.engine.design.JRJdtCompiler.compileUnits(JRJdtCompiler.java:167) 
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:201) 
    ... 44 more 

任何幫助,將不勝感激!謝謝

回答

0

如果你的classpath中有aspectjtools.jar,你可以嘗試通過從類路徑中刪除它來編譯它嗎?

+0

謝謝,不包括aspectj的技巧。 – dstinger