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

Quarkus uber-jar运行PrimeFaces时出现组件未定义异常求助

问题描述

将原Wildfly环境下的WAR项目(包含JSF与PrimeFaces)通过quarkus-primefaces-extension迁移为Quarkus应用后,使用mvn quarkus:dev启动开发模式运行正常,但构建为uber-jar运行时,访问主页面立即抛出如下异常:

SEVERE org.apache.myfaces.application.ApplicationImpl.createComponent(1282) [executor-thread-1] - Undefined component type org.primefaces.component.Growl
jakarta.faces.FacesException: Undefined component type org.primefaces.component.Growl
        at org.apache.myfaces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1283)
        at org.apache.myfaces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1252)
        at jakarta.faces.application.ApplicationWrapper.createComponent(ApplicationWrapper.java:128)
        at org.apache.myfaces.view.facelets.tag.faces.ComponentTagHandlerDelegate.createComponent(ComponentTagHandlerDelegate.java:587)
        at org.apache.myfaces.view.facelets.tag.faces.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:275)
        at jakarta.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:52)
        at jakarta.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
        at org.apache.myfaces.view.facelets.tag.faces.core.ViewHandler.apply(ViewHandler.java:195)
[...]

当前使用的依赖版本:

  • Quarkus 3.0.4.Final
  • quarkus-primefaces 3.13.3
  • myfaces-quarkus 4.0.1
  • quarkus-omnifaces 4.2.1
  • JDK 17

请问该异常产生的原因是什么?

异常原因分析
  1. PrimeFaces组件未被MyFaces正确注册:Quarkus打包uber-jar时的资源加载逻辑和开发模式不同,开发阶段能正常读取PrimeFaces的faces-config.xml等配置文件完成组件注册,但打包后可能因配置文件未被正确扫描或加载,导致MyFaces无法识别org.primefaces.component.Growl组件类型。
  2. 依赖版本兼容性不匹配:Quarkus 3.x基于Jakarta EE 10规范,当前使用的quarkus-primefaces、myfaces-quarkus版本可能与Quarkus 3.0.4.Final存在适配问题,部分组件的注册逻辑在跨版本不兼容时会失效。
  3. Uber-Jar打包时资源缺失:打包过程中,PrimeFaces的标签库描述符(如primefaces.taglib.xml)或组件定义文件可能被错误过滤,未包含在最终的uber-jar中,导致MyFaces无法扫描到组件类型定义。
  4. Quarkus打包优化导致类被移除:Quarkus打包时会执行死代码移除优化,如果PrimeFaces的Growl组件类未被标记为需要保留,可能被误判为无用代码而移除,运行时无法实例化该组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:07