【问题标题】:Migrating a project with JasperReports from Spring 4 to Spring 5 [duplicate]使用 JasperReports 将项目从 Spring 4 迁移到 Spring 5 [重复]
【发布时间】:2026-02-12 04:55:02
【问题描述】:

大家好,我们计划将项目从 Java 8 升级到 Java 11。因此项目的 Spring 版本将从 Spring 4x 更改为 Spring 5x

视图解析是在 Spring 4x 中完成的,如下所示

1)spring xml配置:

<bean class="org.springframework.web.servlet.view.XmlViewResolver">
    <property name="location" value="/WEB-INF/jasper-view.xml"/>
    <property name="order" value="0"/>
</bean>

2) jasper-view.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <!--here all the url value should contains the valid path for the jrxml file-->

    <bean id="purchasePdf"
          class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView"
          p:url="classpath:reports/purchaseReport.jrxml"
          p:reportDataKey="datasource" />

所以随着升级 Spring 版本更新到 5.2.5.RELEASE 和 jasper 版本更新如下:

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

该项目正在构建并且没有错误,但在 Tomcat 服务器中部署时出现以下错误:

Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView] for bean with name 'purchasePdf' defined in ServletContext resource [/WEB-INF/jasper-view.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView

Spring 5 似乎已经放弃了对 Jasper 的支持

https://github.com/spring-projects/spring-framework/issues/17884

是否有替代解决方案?

【问题讨论】:

    标签: java spring jasper-reports java-11 spring5


    【解决方案1】:

    建议使用原生 JasperReports API:

    因此,我们更推荐原生使用 JasperReports Spring MVC 处理程序方法中的 API,从 专门设计的 RESTful 端点。我们正在放弃我们的现在 Spring Framework 的半无用 JasperReports 视图类层次结构 5.0。请注意,我们对已弃用的 JRExporter API 的现有支持仍然存在于 Spring Framework 4.3.x 行中,直到 2019 年,在 特别适用于现有应用程序。但是,即使使用 4.3,本机 JasperReports API 的使用值得考虑。

    我想这些是升级的挑战/痛苦的一部分。

    【讨论】: