Перенос проекта с JasperReports с Spring 4 на Spring 5

Привет всем, мы планируем обновить наш проект с 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

Есть ли альтернативное решение для этого?

1 ответ

Рекомендуется использовать собственный JasperReports API:

Как следствие, мы скорее рекомендуем использовать JasperReports API в методах обработчика Spring MVC, создавая отчеты из специально разработанных конечных точек RESTful. Мы отказываемся от нашей теперь уже полу бесполезной иерархии классов представлений JasperReports, начиная с Spring Framework 5.0. Обратите внимание, что наша существующая поддержка устаревшего API JRExporter остается в строке Spring Framework 4.3.x до 2019 года, в частности для существующих приложений. Однако даже в версии 4.3 стоит подумать о собственном использовании JasperReports API.

Я полагаю, что это часть проблем / трудностей при обновлении.

Другие вопросы по тегам