2013-07-18 24 views
2

我們已經創建了使用iReport4.5.1報告。它在iReport中正常工作。JasperReports的:獲取JRRuntimeException:錯誤創建SAX解析器

之後,我們已經整合到我們的應用報告。我們使用maven構建我們的應用程序。在的pom.xml

<dependency> 
    <groupId>net.sf.jasperreports</groupId> 
    <artifactId>jasperreports</artifactId> 
    <version>4.5.1</version> 
</dependency> 

<dependency> 
    <groupId>jasperreports-javaflow</groupId> 
    <artifactId>jasperreports-javaflow</artifactId> 
    <version>4.5.1</version> 
</dependency> 

以下是JasperReports的依賴關係,並以下是的Java代碼生成報告:

String jrxmlFilePath = getConfigBundle().getString("jasper.templates.jrxml.path"); 
String jasperFilePath = getConfigBundle().getString("jasper.templates.jasper.path"); 
JasperCompileManager.compileReportToFile(jrxmlFilePath, jasperFilePath); 
File jasperFile = new File(jasperFilePath); 
Connection conn = setUpDataSource(); 
HashMap jasperParameter = setUpJasperParameterForPackingList(truckId, rackId, jasperFile); 
JasperPrint jprint = JasperFillManager.fillReport(jasperFilePath, jasperParameter, conn); 
ByteArrayOutputStream reportOutputStream = new ByteArrayOutputStream(); 
JasperExportManager.exportReportToPdfStream(jprint, reportOutputStream); 
return reportOutputStream; 

當我把這個代碼,它會給我下錯誤:

ERROR - [DGU_ACTION_SERVLET] ServletException 
javax.servlet.ServletException: net.sf.jasperreports.engine.JRRuntimeException: Error creating SAX parser 
    at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 
    at com.saintgobain.dgu.mvc.action.DguActionServlet.process(DguActionServlet.java:41) 
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Error creating SAX parser 
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.createParser(BaseSaxParserFactory.java:99) 
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1342) 
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1318) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156) 
    at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:108) 
    at com.saintgobain.dgu.helper.ExportReportPDFHelper.printPackingListJasper(ExportReportPDFHelper.java:287) 
    at com.saintgobain.dgu.helper.ExportReportPDFHelper.generatePDF4PackingList(ExportReportPDFHelper.java:353) 
    at com.saintgobain.dgu.mvc.action.shipping.ExportShippingReportAction.execute(ExportShippingReportAction.java:79) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 
    ... 22 more 
Caused by: org.xml.sax.SAXNotRecognizedException: Property: http://java.sun.com/xml/jaxp/properties/schemaLanguage 
    at org.apache.crimson.parser.XMLReaderImpl.setProperty(XMLReaderImpl.java:266) 
    at org.apache.crimson.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:183) 
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(BaseSaxParserFactory.java:132) 
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.createParser(BaseSaxParserFactory.java:94) 
    ... 32 more 
ERROR - [DGU_ACTION_SERVLET] ServletException - root cause 
net.sf.jasperreports.engine.JRRuntimeException: Error creating SAX parser 
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.createParser(BaseSaxParserFactory.java:99) 
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1342) 
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1318) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156) 
    at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:108) 
    at com.saintgobain.dgu.helper.ExportReportPDFHelper.printPackingListJasper(ExportReportPDFHelper.java:287) 
    at com.saintgobain.dgu.helper.ExportReportPDFHelper.generatePDF4PackingList(ExportReportPDFHelper.java:353) 
    at com.saintgobain.dgu.mvc.action.shipping.ExportShippingReportAction.execute(ExportShippingReportAction.java:79) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 
    at com.saintgobain.dgu.mvc.action.DguActionServlet.process(DguActionServlet.java:41) 
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: org.xml.sax.SAXNotRecognizedException: Property: http://java.sun.com/xml/jaxp/properties/schemaLanguage 
    at org.apache.crimson.parser.XMLReaderImpl.setProperty(XMLReaderImpl.java:266) 
    at org.apache.crimson.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:183) 
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(BaseSaxParserFactory.java:132) 
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.createParser(BaseSaxParserFactory.java:94) 
    ... 32 more 
  1. 我們使用了兩個iReport的JasperReports的版本4.5.1
  2. 我已經把XercesImpl.jar(2.8.1版)依存性類路徑
  3. 我們使用JDK。 1.6.0_33

請幫助我該如何排除此錯誤?

+0

我們使用2.8.1作爲Xerces。 – user223614

+0

你確定你在使用* Xerces *嗎?它來自你的statcktrace:'org.apache.crimson.parser.XMLReaderImpl.setProperty(XMLReaderImpl.java:266)' –

+0

我們在pom.xml中也有crimson依賴關係 – user223614

回答

1

你可以從該行的堆棧跟蹤的看到:

org.apache.crimson.parser.XMLReaderImpl.setProperty(XMLReaderImpl.java:266) 

CrimsonXML解析器應用程序中使用。

深紅實現不支持從這些值[1]不同的屬性值:

"http://xml.org/sax/properties/lexical-handler" 

"http://xml.org/sax/properties/declaration-handler" 

JasperReports的引擎嘗試使用http://java.sun.com/xml/jaxp/properties/schemaLanguage屬性(如可以從堆棧跟蹤看到[2])。

iReport的使用XercesXML解析器執行。例如,iReport的4.7.0iReport的5.2.0使用2.8.0版本的Xerces的。

你可以試試這個(的Xerces)庫作爲依賴添加到的pom.xml

[1]:參見方法getProperty(String)的源代碼中org.apache.crimson.parser.XMLReaderImpl

[2]:JR引擎嘗試在net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(SAXParser)方法設置此屬性對於的SAXParser