升级Quarkus至3.0+后遭遇javax.enterprise.inject.spi.DeploymentException异常
Quarkus 2→3升级后javax/enterprise/inject/spi/DeploymentException缺失问题排查与解决
问题背景
将Quarkus从2.9.2.Final升级至3.0.4.Final后,执行Maven构建时抛出类缺失异常:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:3.0.4.Final:build (default) on project : Execution default of goal io.quarkus.platform:quarkus-maven-plugin:3.0.4.Final:build failed: A required class was missing while executing io.quarkus.platform:quarkus-maven-plugin:3.0.4.Final:build: javax/enterprise/inject/spi/DeploymentException
部分堆栈跟踪:
[ERROR] Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:3.9.4:build (default) on project <redacted>: Execution default of goal io.quarkus.platform:quarkus-maven-plugin:3.9.4:build failed: A required class was missing while executing io.quarkus.platform:quarkus-maven-plugin:3.9.4:build: javax/enterprise/inject/spi/DeploymentException [ERROR] ----------------------------------------------------- [ERROR] realm = extension>io.quarkus.platform:quarkus-maven-plugin:3.9.4 [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
已尝试删除本地Maven仓库重新安装依赖、排除javax.*传递依赖,但问题未解决。
解决步骤
1. 统一Quarkus版本
从堆栈跟踪可见,Maven插件使用的版本是3.9.4,但目标升级版本是3.0.4.Final,版本不一致会引发依赖冲突。需确保pom.xml中所有Quarkus相关依赖(包括插件)版本统一:
<properties> <quarkus.platform.version>3.0.4.Final</quarkus.platform.version> </properties> <build> <plugins> <plugin> <groupId>io.quarkus.platform</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.platform.version}</version> <executions> <execution> <goals> <goal>build</goal> <goal>generate-code</goal> <goal>generate-code-tests</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2. 彻底完成Jakarta EE迁移
Quarkus 3要求所有javax.包替换为jakarta.,需全面排查:
- 全局替换源码中的
import javax.为import jakarta. - 替换pom.xml中直接依赖的javax.*为对应的jakarta.*包(例如
javax.enterprise:cdi-api→jakarta.enterprise:jakarta.enterprise.cdi-api) - 用Maven依赖树排查传递依赖中的javax.*:
对找到的传递依赖添加排除,并显式引入对应的jakarta.*依赖。mvn dependency:tree -Dincludes=javax.*
3. 清理并重新构建
除了删除.m2仓库,执行以下命令强制清理构建缓存并更新依赖:
mvn clean install -U
4. 检查扩展兼容性
确认项目中使用的Quarkus扩展是否支持3.x版本。部分第三方扩展可能未完成Jakarta迁移,需替换为兼容版本或移除未维护的扩展。
内容的提问来源于stack exchange,提问作者Samyog Adhikari
相关产品推荐
相关产品推荐

