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

模块读取javax.annotation包冲突问题求助

解决模块包冲突:module reads package javax.annotation from both jsr305 and java.annotation

错误原因

  • Java模块系统(JPMS)禁止同一个包被多个模块提供。javax.annotation:jsr305:1.0(自动模块,模块名jsr305)与javax.annotation:javax.annotation-api:1.3.2(显式模块,模块名javax.annotation)都包含javax.annotation包,触发冲突。
  • 你之前的exclude配置无效,因为javax.annotation-api是直接声明的依赖,而非jsr305的传递依赖,exclude仅能移除依赖的传递依赖,无法处理直接依赖的冲突。

解决方案

方案1:调整依赖范围(推荐)

@Nonnull、@Nullable属于编译时注解,无需在运行时类路径存在;@Generated通常也仅在编译阶段被工具使用。将依赖设置为compileOnly可避免同时出现在模块路径中:

修改build.gradle:

compileOnly "javax.annotation:jsr305:1.0"                  // 编译阶段用@Nonnull、@Nullable
compileOnly "javax.annotation:javax.annotation-api:1.3.2"  // 编译阶段用@Generated

若运行时确实需要javax.annotation-api(如框架扫描@Generated),仅保留它的implementation范围:

compileOnly "javax.annotation:jsr305:1.0"
implementation "javax.annotation:javax.annotation-api:1.3.2"

方案2:禁用Java模块系统(临时方案)

通过禁用JPMS的模块路径推断绕过冲突,但不推荐长期使用:

java {
    modularity.inferModulePath = false
}

方案3:替换为单一依赖(彻底解决)

使用com.google.code.findbugs:jsr305:3.0.2包含@Nonnull、@Nullable,同时用Java 9+自带的javax.annotation.processing.Generated替换javax.annotation.Generated,完全移除javax.annotation-api:

依赖配置:

implementation "com.google.code.findbugs:jsr305:3.0.2"

源码中修改注解:

@javax.annotation.processing.Generated

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:15:59