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

JDK11下Gradle Java项目使用Manifold注解找不到如何解决

问题修复方案

核心错误原因

你当前只声明了manifold-ext的注解处理器依赖,没有添加manifold-ext的核心编译依赖,@Extension、@This注解均包含在manifold-ext核心包中,同时存在Lombok版本冲突、JDK11模块化参数缺失两个问题。

分步修改配置

  • 统一Lombok依赖版本,移除无效依赖
    Lombok不需要配置implementation依赖,现有配置中两个版本的Lombok声明存在冲突,修改为统一版本:
// 移除原配置中的 implementation 'org.projectlombok:lombok:1.18.18' 行
compileOnly 'org.projectlombok:lombok:1.18.30'
annotationProcessor 'org.projectlombok:lombok:1.18.30'
testCompileOnly 'org.projectlombok:lombok:1.18.30'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
  • 补全Manifold相关依赖
    添加manifold-ext核心依赖,以及Lombok和Manifold的适配依赖,所有Manifold组件版本保持一致:
dependencies {
    // 原有依赖保留
    implementation 'systems.manifold:manifold-ext:2021.1.25'
    annotationProcessor 'systems.manifold:manifold-lombok:2021.1.25'
}

如果依赖拉取失败,在repositories块中添加mavenCentral()。

  • 添加JDK11适配编译参数
    JDK9+对内部API做了模块化限制,需要开放指定包给Manifold使用,添加如下配置:
compileJava {
    options.compilerArgs += [
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED',
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED',
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED',
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED'
    ]
}

compileTestJava {
    options.compilerArgs += compileJava.options.compilerArgs
}
  • 校验扩展类包路径
    Manifold要求扩展类要么和目标类java.math.BigDecimal放在同一个java.math包下,要么配置指定扩展扫描包,配置方式为在编译参数中添加:
compileJava.options.compilerArgs += ['-Amanifold.ext.packages=你的扩展类所在包名']

修改完成后执行./gradlew clean build即可正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:36:05