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

现有Java项目中Kotlin简单反射功能无法正常运行

Kotlin代码运行抛出NoSuchMethodError的排查与解决

异常本质

java.lang.NoSuchMethodError: 'void kotlin.jvm.internal.PropertyReference1Impl.<init>(java.lang.Class, java.lang.String, java.lang.String, int)'这个错误,核心原因是编译时使用的Kotlin类库版本,和运行时加载的版本不一致。

PropertyReference1Impl的构造方法签名在Kotlin不同版本中存在变更,你编译代码用的是Kotlin 1.7.20,但运行时可能有更低版本的kotlin-stdlib或kotlin-reflect被优先加载,导致找不到对应构造方法。

排查与解决步骤

1. 定位依赖冲突

执行Gradle命令打印完整的运行时依赖树,找出引入旧版本Kotlin库的第三方依赖:

./gradlew dependencies --configuration runtimeClassPath

重点查找org.jetbrains.kotlin:kotlin-stdlib、kotlin-stdlib-jdk7、kotlin-stdlib-jdk8、kotlin-reflect这些依赖,看是否有版本低于1.7.20的条目——这些就是冲突根源。

2. 强制统一Kotlin版本

在build.gradle.kts中添加版本强制规则,确保所有Kotlin相关依赖都使用指定的1.7.20版本,覆盖第三方依赖引入的旧版本:

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

3. 清理缓存并重新构建

执行命令清理旧的编译产物和Gradle缓存,避免残留的旧版本类文件干扰:

./gradlew clean build

补充说明

纯Kotlin项目能正常运行,是因为它的依赖链更纯净,没有引入携带旧版本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 13:45:37