从春季4到春季5使用JasperReports迁移项目

时间:2020-04-09 12:37:40

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

您好,我们打算将我们的项目从Java 8升级到Java11。因此,项目的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

是否有替代解决方案?

1 个答案:

答案 0 :(得分:1)

建议使用本地JasperReports API:

因此,我们建议本地使用JasperReports Spring MVC处理程序方法中的API,可从中生成报告 专门设计的RESTful端点。我们现在放弃 从Spring框架开始的半没用的JasperReports视图类层次结构 5.0。请注意,我们对过时的JRExporter API的现有支持将一直存在于Spring Framework 4.3.x版本中,直到2019年为止。 特别适用于现有应用程序。但是,即使使用4.3,本机 值得考虑使用JasperReports API。

我认为这些是进行升级的挑战/痛苦的一部分。