You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrimeFaces 11 搭配Java 8与Payara Micro部署失败求助

问题分析与解决

第一个错误:UnsupportedClassVersionError(PrimeFaces 11与JDK8不兼容)

PrimeFaces 11.0.0的编译目标是JDK11,类文件字节码版本为55.0,而你使用的JDK8仅支持到字节码版本52.0,这直接导致org.primefaces.webapp.UploadedFileCleanerListener无法在当前JRE运行。

解决办法二选一:

  • 降级PrimeFaces版本:PrimeFaces 10.x是最后一个支持JDK8且兼容Jakarta EE 9的版本,将pom.xml中PrimeFaces依赖版本改为10.0.0。
  • 升级JDK版本:Payara 5.2022.2支持JDK11,升级后可直接兼容PrimeFaces 11,需同步确认项目其他依赖是否支持JDK11。

第二个错误:ClassNotFoundException: jakarta.faces.webapp.FacesServlet

该错误说明项目缺失Jakarta Faces的API依赖,或依赖配置与Payara容器冲突。

解决步骤:

  1. 修正pom.xml的JSF依赖配置,使用Jakarta版本并设置为provided范围(Payara自带JSF实现,避免冲突):
    <dependency>
        <groupId>jakarta.faces</groupId>
        <artifactId>jakarta.faces-api</artifactId>
        <version>3.0.0</version>
        <scope>provided</scope>
    </dependency>
    
  2. 检查web.xml中FacesServlet的类路径是否已从旧的javax.faces.webapp.FacesServlet替换为Jakarta版本:
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
  3. 若pom.xml中引入了第三方JSF实现(如独立Mojarra包),需删除或设置为provided范围,避免与Payara自带实现冲突。

额外注意事项

  • 全局替换所有javax.*导入为jakarta.*,覆盖JSF、Servlet、CDI等所有相关API。
  • 更新配置文件命名空间:如faces-config.xml需将命名空间从http://xmlns.jcp.org/xml/ns/javaee改为https://jakarta.ee/xml/ns/jakartaee。
  • 执行mvn clean install -U清理本地仓库旧依赖,强制更新依赖版本。

内容的提问来源于stack exchange,提问作者Stefano Berretta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:18:20