将PrimeFaces迁移到Jakarta EE 9+, java.lang.NoClassDefFoundError



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

相关内容

  • 没有找到相关文章

最新更新