Перенос проекта с 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.
Я полагаю, что это часть проблем / трудностей при обновлении.