您好,我们打算将我们的项目从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
是否有替代解决方案?
答案 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。
我认为这些是进行升级的挑战/痛苦的一部分。