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

升级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.*:
    mvn dependency:tree -Dincludes=javax.*
    
    对找到的传递依赖添加排除,并显式引入对应的jakarta.*依赖。

3. 清理并重新构建

除了删除.m2仓库,执行以下命令强制清理构建缓存并更新依赖:

mvn clean install -U

4. 检查扩展兼容性

确认项目中使用的Quarkus扩展是否支持3.x版本。部分第三方扩展可能未完成Jakarta迁移,需替换为兼容版本或移除未维护的扩展。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:15:34