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
相关产品推荐
相关产品推荐

