我正在采用 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>
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>