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

NetBeans18搭建Jakarta Faces4项目报错:com.sun.faces.util.Util类找不到

Jakarta Faces项目启动报错:ClassNotFoundException: com.sun.faces.util.Util

环境

  • NetBeans IDE 18
  • Tomcat 10.1.31
  • Java 11
  • 无Maven依赖的全新Jakarta Faces项目

Web.xml配置

<web-app
    xmlns=https://jakarta.ee/xml/ns/jakartaee
    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
    xsi:schemaLocation=https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd
    version="6.0"
> 
<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>jakarta.faces.AUTOMATIC_EXTENSIONLESS_MAPPING</param-name>
    <param-value>true</param-value>
</context-param>
<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
</web-app>

Bean类代码

package com.example;

import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Named;

@Named
@RequestScoped
public class Hello {

    private String name;
    private String message;

    public void createMessage() {
        message = "Hello, " + name + "!";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMessage() {
        return message;
    }
}

错误信息

org.apache.catalina.core.StandardWrapperValve.invoke Allocate exception for servlet [facesServlet]
    java.lang.ClassNotFoundException: com.sun.faces.util.Util

问题分析与解决

这个错误并非新版Jakarta Faces要求旧依赖,核心原因是Tomcat未自带Jakarta Faces实现,且你未手动添加对应的实现库。com.sun.faces.util.Util是Mojarra(Jakarta Faces官方实现)中的类,Tomcat作为轻量级Servlet容器,仅提供Servlet/JSP基础支持,不包含Jakarta Faces、CDI等Jakarta EE组件的实现。

解决步骤:

  1. 下载与Jakarta EE 6兼容的Mojarra版本(对应Faces 4.0)
  2. 将下载的jakarta.faces.jar放入项目的WEB-INF/lib目录
  3. 由于代码使用了@Named和@RequestScoped这类CDI注解,Tomcat同样不自带CDI实现,需额外添加CDI适配库(如Weld的Tomcat适配包)到WEB-INF/lib
  4. 重新部署项目至Tomcat

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:38:20