Quarkus 3.3.1默认404页面异常求助:是否为依赖所致?
Quarkus 3.3.1 403禁止替代默认404页面问题排查
你遇到的问题是:访问未匹配的路径(如根路径localhost:8080/或错误API路径localhost:8080/hellou)时返回403禁止,而非Quarkus默认的美观404页面,但正确API路径可正常访问。结合你提供的依赖,重点排查以下方向:
1. 优先排查commons-beanutils依赖
commons-beanutils:1.9.4是老旧版本,其依赖链中可能包含与Quarkus HTTP路由处理冲突的组件。虽然该库用于Bean属性操作,但部分旧版本会间接引入Servlet API相关的拦截逻辑,干扰Quarkus对未匹配路径的错误响应流程,导致返回403而非默认404。
解决建议:
- 如果项目无需此依赖,直接移除它,重启服务验证是否恢复默认404页面。
- 如果必须使用,可通过Maven排除可能的冲突传递依赖:
<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> </exclusions> </dependency>
2. 检查xercesImpl的类加载冲突
Quarkus内部已集成Jakarta规范的XML解析组件,手动引入xercesImpl:2.12.2可能引发类加载冲突,破坏HTTP请求的错误处理流程。若项目没有明确依赖该XML解析器,建议移除它,依赖Quarkus自带的解析实现即可。
3. 分析完整依赖树
执行Maven命令查看项目完整依赖树,排查是否有未预期的安全拦截器或Servlet过滤器被引入:
mvn dependency:tree
重点关注javax.servlet或jakarta.servlet相关的依赖,这类组件可能会拦截未匹配路径的请求,强制返回403状态码。
4. 显式启用Quarkus默认错误页面
若移除冲突依赖后问题仍存在,可在application.properties中显式配置启用默认错误页面:
quarkus.http.error-pages.enabled=true
该配置将强制Quarkus使用内置的错误页面处理逻辑,覆盖可能存在的自定义拦截行为。
内容的提问来源于stack exchange,提问作者Henrique Machado
相关产品推荐
相关产品推荐

