在 Payara 6 和 Java 11 中使用 RichFaces 或 PrimeFaces 时出现异常

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

我正在将一个 Web 应用程序从 Payara Server 4(使用 Java 8)迁移到 Payara Community 版本 6(使用 Java 11)上运行。

当我部署使用 RichFaces 的 Web 应用程序时,出现以下错误:

部署期间出现严重错误:NoClassDefFoundError:javax/faces/FacesWrapper

这是应用程序使用的 RichFaces 的依赖项引用:

<dependency>
    <groupId>org.richfaces</groupId>
    <artifactId>richfaces</artifactId>
    <version>4.5.17.Final</version>
</dependency>

当我将此 Web 应用程序部署到旧的 Payara 4 服务器时,不会发生这种情况。

更糟糕的是 https://richfaces.jboss.org/ RichFaces 已于 2016 年 6 月结束生命。

自从看到这个问题后,我了解到应该使用 PrimeFaces,所以当我删除 RichFaces 并使用 PrimeFaces 并尝试部署时,我收到了这个新错误: LifecycleException:IllegalArgumentException:NoClassDefFoundError:javax / servlet / ServletRequestListener

仅供参考,这里是对 PrimeFaces 依赖项的 pom.xml 引用:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>13.0.4</version>
</dependency>

有人遇到过类似的问题吗?如果是这样,你是如何解决的?

jsf primefaces richfaces payara jakarta-migration
1个回答
1
投票

Payara 6 是 Jakarta EE10,因此您需要使用 Jakarta 版本的 jar,这就是发生错误

NoClassDefFoundError: javax/faces/FacesWrapper
的原因。要使用 PrimeFaces Jakarta,请执行以下操作...

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>13.0.4</version>
    <classifier>jakarta</classifier>
</dependency>

我不知道 RichFaces 是否有雅加达版本。您可以检查这个分支,它使 RichFaces 保持最新状态:https://github.com/albfernandez/richfaces

您可能还想阅读这篇有关迁移到 Jakarta EE10 的博客文章:https://www.melloware.com/java-ee-6-8-to-jakarta-ee-10-upgrade/

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