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