将 PrimeFaces 迁移到 Jakarta EE 9+,javax.* 上的 java.lang.NoClassDefFoundError

Kro*_*One 7 jsf primefaces jakarta-migration

我正在采用 Jakarta EE 9 并使用 EJB 和 WAR 模块开发 EE 应用程序。EJB 已经完成并部署在 GlassFish 6 上。现在我想使用 PrimeFaces 开发 WAR 模块作为同一 EAR 的一部分,并将 EAR 部署在 GF 6 上。

我知道我可以使用的第一个 PrimeFaces 版本是 10.0.0-RC2,因为这是第一个支持 JSF 3.0(Jakarta EE 9 的一部分)的版本。我对吗?但我收到以下错误:

java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener
Run Code Online (Sandbox Code Playgroud)

为什么 PF 10.0.0-RC2 仍然依赖于javax.*而不是jakarta.*

pom 依赖项是:

<dependencies>
    <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-api</artifactId>
        <version>9.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>10.0.0-RC2</version>
    </dependency> 
</dependencies>
Run Code Online (Sandbox Code Playgroud)

Mel*_*are 17

PrimeFaces 自 10.0.0-RC2 起有 2 种版本,使用javax.*依赖项的默认版本和使用依赖项的 Jakartified 版本jakarta.*。要在这些之间切换,您需要将<classifier>PrimeFaces 依赖项设置为jakarta

例如:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version><!-- 10.0.0-RC2, 11.0.0, 12.0.0, etc --></version>
    <classifier>jakarta</classifier>
</dependency> 
Run Code Online (Sandbox Code Playgroud)