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

Spring Boot 3项目添加module-info.java时出现“module not found: jakarta.cdi”错误

解决添加jakarta.transaction模块后出现"module not found: jakarta.cdi"的问题

问题原因

Jakarta Transaction模块(jakarta.transaction)依赖于Jakarta CDI模块,启用Java模块系统(存在module-info.java)时,JVM不会自动解析传递依赖的模块——和类路径模式下自动加载所有依赖不同,模块化模式要求你显式声明所有直接或间接需要的模块。

解决方案

  1. 在module-info.java中显式声明对jakarta.cdi的依赖
    修改模块声明文件,添加requires jakarta.cdi;:

    module myModule.main {
        // 保留已有的其他requires声明
        requires jakarta.transaction;
        requires jakarta.cdi;
    }
    
  2. 验证Gradle依赖配置(可选)
    虽然项目无module-info.java时可正常运行,仍可确认build.gradle中是否包含Jakarta CDI的依赖(通常是jakarta.enterprise:jakarta.enterprise.cdi-api),确保其作用域覆盖模块化编译阶段:

    dependencies {
        // 示例配置,根据实际版本调整
        implementation 'jakarta.transaction:jakarta.transaction-api:2.0.1'
        implementation 'jakarta.enterprise:jakarta.enterprise.cdi-api:4.0.1'
    }
    
  3. 按需调整模块访问权限
    如果代码仅在运行时需要CDI模块而非编译阶段,可使用requires static声明:

    module myModule.main {
        requires jakarta.transaction;
        requires static jakarta.cdi;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:32:09