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

Payara 6(Java 11)迁移时RichFaces/PrimeFaces异常求助

迁移至Payara Community 6的问题解决

RichFaces部署错误:NoClassDefFoundError: javax/faces/FacesWrapper

RichFaces 4.5.17.Final基于Java EE 7开发,依赖旧的javax.faces命名空间API,但Payara Community 6遵循Jakarta EE 9规范,已将所有Java EE API的命名空间从javax替换为jakarta(比如javax.faces.FacesWrapper现在是jakarta.faces.FacesWrapper)。加上RichFaces早在2016年就停止维护,完全没有适配Jakarta EE的版本,这个问题没法通过小修改解决,直接放弃RichFaces、转用PrimeFaces这类仍在维护且支持Jakarta EE的组件库是唯一可行方案。

PrimeFaces部署错误:NoClassDefFoundError: javax/servlet/ServletRequestListener

这个错误同样源于Java EE到Jakarta EE的命名空间变更,javax.servlet.ServletRequestListener已被替换为jakarta.servlet.ServletRequestListener,解决步骤如下:

  • 调整项目依赖:将所有旧的Java EE依赖(比如javax.servlet-api、javax.faces-api)替换为Jakarta EE版本,并且设置为provided范围(Payara 6自带这些API,避免打包冲突)。示例配置:
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.faces</groupId>
        <artifactId>jakarta.faces-api</artifactId>
        <version>3.0.0</version>
        <scope>provided</scope>
    </dependency>
    
  • 更新配置文件命名空间:将web.xml、faces-config.xml等配置文件的命名空间从Java EE的http://xmlns.jcp.org/xml/ns/javaee替换为Jakarta EE的http://xmlns.jcp.org/xml/ns/jakartaee,同时更新版本号(比如web.xml对应version="4.0")。
  • 替换代码中的API引用:全局替换项目代码里的javax.servlet、javax.faces等旧包名为jakarta.servlet、jakarta.faces。
  • 排查冲突依赖:检查项目中是否有其他第三方库仍在使用旧的javax命名空间API,比如老旧的工具类、拦截器,替换或升级这些依赖到Jakarta兼容版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:24