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

Gradle 8.0.2迁移OmniFaces showcase-master编译报错无法找到FacesContext

解决Gradle迁移后找不到FacesContext的编译错误

1. 补全Gradle依赖配置

Maven激活的non-ee和mojarra-4.0.0.SP01 Profile会引入Mojarra(JSF实现)的相关依赖,但Gradle init工具不会自动迁移Maven Profile中的依赖项,需手动添加到build.gradle:

dependencies {
    // 添加JSF API与Mojarra实现作为编译时依赖(对应Maven的provided scope)
    compileOnly 'jakarta.faces:jakarta.faces-api:4.0.0'
    compileOnly 'org.glassfish:jakarta.faces:4.0.0.SP01'
    
    // 保留项目原有核心依赖
    implementation 'org.omnifaces:omnifaces:4.0'
    // ... 其他项目依赖
}

注意:若项目代码仍使用javax.faces旧包名(对应Jakarta EE 8及以下),需调整依赖为JSF 2.3版本:

compileOnly 'javax.faces:javax.faces-api:2.3'
compileOnly 'org.glassfish:javax.faces:2.3.15'

2. 确认Java版本配置

WildFly 27搭配JDK 20,需在build.gradle中指定匹配的Java版本:

java {
    sourceCompatibility = JavaVersion.VERSION_20
    targetCompatibility = JavaVersion.VERSION_20
}

3. 清理缓存并重新构建

执行以下命令清理Gradle缓存后重新编译:

./gradlew clean compileJava

额外排查点

  • 检查代码中FacesContext的导入语句:import jakarta.faces.context.FacesContext;对应Jakarta Faces 4.0+依赖,import javax.faces.context.FacesContext;对应JSF 2.3及以下依赖,需与配置的依赖版本匹配。
  • 编译阶段无需依赖WildFly容器模块,仅需Gradle提供编译时依赖即可,容器模块仅在运行时生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:28:04