How to make JasperReports work with Jakarta EE 9 or any workaround to make JasperReports (6.20.0 version) work with Jakarta EE 9?

问题描述 投票:0回答:2

我正在升级我的 Maven 应用程序以使用 spring 6.x 从 5.x。 Spring 6.x 基于 Jakarta EE,所以我相应地更新了我的依赖项。但是对于 JasperReports,我在 web.xml 文件中定义了一个 servlet:

<servlet>
<servlet-name>PdfServlet</servlet-name><servlet-class>net.sf.jasperreports.j2ee.servlets.PdfServlet</servlet-class>
</servlet>

它是抛出错误:引起:java.lang.IllegalArgumentException:UT010009:类型类 net.sf.jasperreports.j2ee.servlets.PdfServlet 的 Servlet PdfServlet 没有实现 jakarta.servlet.Servlet。

同样,shiro 库也出现错误,错误:由:java.lang.IllegalArgumentException: UT010011: Filter ShiroFilter of type class org.apache.shiro.web.servlet.ShiroFilter does not implement jakarta.servlet.Filter.

<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>

当我尝试在 Wildfly 27 应用服务器上运行我的应用程序时。我正在使用 6.20.0 版本的 JasperReports 库和 1.10.0 版本的 shiro(核心、网络、ehcache 和 spring)。

哪个版本的 JasperReports 支持 Jakarta EE,或者什么时候发布支持 Jakarta EE 的最新版本,有什么解决方法的建议吗?

我已经将 JasperReports 库从 6.15.0 更新到 6.20.0

spring jakarta-ee jasper-reports shiro java-17
2个回答
0
投票

1 - 对于 JasperReports,您仍然可以将它与 Jakarta EE 10 一起使用,只需实现您的 propre servlet

2 - 对于 shiro,根据 Apache Shiro Jakarta EE Integration

jakarta
分类器添加到 pom.xml 中的依赖项,如下所示:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.11.0</version>
    <classifier>jakarta</classifier>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-web</artifactId>
    <version>1.11.0</version>
    <classifier>jakarta</classifier>
</dependency>    

0
投票

JasperReports 6.20.0 旨在与 Java 8 和更早版本的 Java EE 一起使用。但是,随着 Jakarta EE 9 的推出,API 和依赖项发生了一些变化,可能会导致兼容性问题。

这里有一些步骤可以让 JasperReports 与 Jakarta EE 9 一起工作:

确保您使用的是与 Java 8 兼容的最新版本的 JasperReports。

将以下依赖项添加到您的项目中:

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.1</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-core</artifactId>
  <version>2.3.0.1</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.0.1</version>
</dependency>

这些依赖项将提供 JasperReports 所需的必要 JAXB API。

如果您使用的是 Jakarta EE 9 应用程序服务器,您可能需要配置服务器以将这些依赖项包含在运行时类路径中。这通常可以通过将依赖项添加到服务器的共享库或模块来完成。

如果您遇到类路径冲突或缺少依赖项的任何问题,您可能需要对应用程序的部署配置执行额外的配置或调整。例如,您可能需要排除冲突的库或调整模块依赖关系。

请注意,虽然这些步骤可能有助于使 JasperReports 与 Jakarta EE 9 一起工作,但不能保证所有特性或功能都能按预期工作。有些问题可能需要对 JasperReports 库本身进行额外的更改或更新。

© www.soinside.com 2019 - 2024. All rights reserved.