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

已有Java Gradle项目中Kotlin版JDBI3运行失败问题求助

解决Java+Gradle混合项目中Kotlin 1.7.20 + JDBI3的NoSuchMethodError问题

从你描述的情况来看,问题大概率出在依赖版本冲突或者混合项目的构建配置不完整上——毕竟独立Kotlin项目能正常运行,说明代码本身没问题。下面是几个针对性的排查和解决步骤:

1. 强制统一Kotlin相关依赖版本

即使你确认runtimeClassPath里有kotlin-reflect:1.7.20,也可能存在其他依赖偷偷引入了低版本的kotlin-stdlib或kotlin-reflect,导致运行时加载了不兼容的类。

在项目根目录的build.gradle里添加版本强制策略:

configurations.all {
    resolutionStrategy {
        force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20"
        force "org.jetbrains.kotlin:kotlin-reflect:1.7.20"
    }
}

之后执行./gradlew dependencies检查依赖树,确认没有其他版本的Kotlin库被引入。

2. 完善Kotlin插件与源码目录配置

混合项目里如果Kotlin插件配置不全,可能导致编译后的字节码和Java代码不兼容:

  • 确保正确应用Kotlin JVM插件,并且指定版本和项目JDK匹配:
plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.7.20'
}

kotlin {
    jvmToolchain(8) // 替换成你项目实际使用的JDK版本
}
  • 配置sourceSets,让Gradle识别Kotlin源码目录:
sourceSets {
    main {
        java.srcDirs 'src/main/java'
        kotlin.srcDirs 'src/main/kotlin'
    }
    test {
        java.srcDirs 'src/test/java'
        kotlin.srcDirs 'src/test/kotlin'
    }
}

3. 匹配JDBI3与Kotlin的版本兼容性

JDBI3的Kotlin扩展对Kotlin版本有要求,旧版本的jdbi3-kotlin可能不支持Kotlin 1.7.x。确保你的JDBI3依赖版本和Kotlin 1.7.20兼容(比如JDBI3 3.30.0及以上版本):

implementation 'org.jdbi:jdbi3-core:3.37.0'
implementation 'org.jdbi:jdbi3-kotlin:3.37.0'
implementation 'org.jdbi:jdbi3-kotlin-sqlobject:3.37.0' // 如果你用到了SQL Object接口

4. 清理缓存并重新构建

Gradle缓存有时候会残留旧的编译产物或依赖,执行以下命令彻底清理后重新构建:

./gradlew clean build --refresh-dependencies

5. 验证运行时类路径的实际依赖

不要只依赖配置声明,直接查看运行时实际加载的依赖版本:
执行命令输出runtimeClassPath的内容:

./gradlew printRuntimeClasspath

检查输出中kotlin-reflect和kotlin-stdlib的jar包版本是否都是1.7.20,有没有其他版本的Kotlin库混进来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:30:45