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

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

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

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

java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener

为什么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>
jsf primefaces jakarta-migration
1个回答
9
投票

PrimeFaces 从 10.0.0-RC2 开始有两种版本,默认版本使用

javax.*
依赖项,Jakartified 版本使用
jakarta.*
依赖项。要在这些之间切换,您需要将 PrimeFaces 依赖项的
<classifier>
设置为
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> 
© www.soinside.com 2019 - 2024. All rights reserved.