java - 处理程序调度失败;嵌套异常是 java.lang.AbstractMethodError : javax. xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V

标签 java maven jasper-reports

先决条件

我最近从 JasperReports 版本 3.7.6 升级到 6.4.1。 JasperReports-fonts 仍保留在 5.6.1 版本。我还确保更新每个项目的核心依赖项,它们现在包含在 Maven 构建中。

我的服务器有一个 JavaSE-1.8 构建路径,这也符合我的环境。

pom.xml 中更新的 Jasper Maven 依赖项如下。

<dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports-fonts</artifactId>
        <version>5.6.1</version>
        <type>jar</type>
        <scope>compile</scope>
</dependency>  

<dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.4.1</version>
        <type>jar</type>
        <scope>compile</scope>
</dependency> 

我意识到这是一个很大的版本跳跃,我们一定会遇到一些错误,但是 Maven 构建并编译了 .jrxml 报告文件成功。但是,当我尝试运行客户的报告时遇到异常。

<小时/>

异常

消息:

Handler dispatch failed; nested exception is java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V

描述:

The server encountered an internal error that prevented it from fulfilling this request.

异常:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)

根本原因:

java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.<init>(SimpleFontExtensionHelper.java:149)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.getInstance(SimpleFontExtensionHelper.java:131)
net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.ensureFontExtensions(FontExtensionsRegistry.java:80)
net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:57)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:115)
net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:86)
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:110)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:200)
net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:215)
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:115)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:648)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:970)

最佳答案

该错误表明您的项目中有旧的 DOM/SAX 实现。

您可能对 Xerces 等解析器有直接或传递依赖。

您应该将依赖项升级到更新版本,或者删除/排除它,以便使用 JRE 中包含的解析器。

关于java - 处理程序调度失败;嵌套异常是 java.lang.AbstractMethodError : javax. xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45943656/

相关文章:

大型 Maven 项目中 Eclipse 卡在 "verifying launch attributes"上

utf-8 - iReport预览/导出器输出不处理UTF-8翻译?

jasper-reports - JasperReports和自定义数据源

java - JTable中的数据没有改变

java - Jersey :@Consumes 在未设置内容类型时无法正常工作

java - 无法看到 server.xml

java - 在 JasperReports 5.6.1 中打印二维码

java - 将变量从一个类传递到另一个类

eclipse - Java 编译器级别与安装的 Java 项目构面的版本不匹配

maven - 如何使用 Sonar Maven 插件