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

如何解决引入Exposed依赖的Kotlin多平台库构建失败问题

问题根因

你遇到的报错本质是0.34.1版本的Exposed未发布Kotlin多平台(KMP)兼容的构件,在commonMain中引入JVM专属坐标时,Gradle无法匹配对应平台构件,进而拉取不存在的分类器包导致报错。

解决方案

1. 升级Exposed到支持KMP的版本

Exposed从0.37.0版本开始正式支持Kotlin多平台,优先选择最新稳定版即可,无需使用低版本。

2. 修正Gradle依赖配置

调整commonMain和对应平台的依赖声明,使用Exposed KMP专属坐标:

sourceSets {
    val commonMain by getting {
        dependencies {
            // KMP版本核心依赖
            implementation("org.jetbrains.exposed:exposed-core-kmp:0.49.0")
            // 如需DAO能力可额外加这个KMP依赖
            implementation("org.jetbrains.exposed:exposed-dao-kmp:0.49.0")
        }
    }
    val commonTest by getting {
        dependencies {
            implementation(kotlin("test"))
        }
    }
    // JVM平台单独引入JDBC相关依赖
    val jvmMain by getting {
        dependencies {
            implementation("org.jetbrains.exposed:exposed-jdbc:0.49.0")
            // 可按需添加对应数据库的JDBC驱动,例如MySQL:
            // implementation("mysql:mysql-connector-java:8.0.33")
        }
    }
    val jvmTest by getting
    val jsMain by getting
    val jsTest by getting
    val nativeMain by getting
    val nativeTest by getting
}

3. 确认仓库配置正确

检查项目根目录的settings.gradle.kts或者模块级build.gradle.kts中的仓库配置,必须包含Maven Central:

repositories {
    mavenCentral()
    // 如需使用快照版本可额外添加JetBrains专属仓库:
    // maven("https://maven.pkg.jetbrains.space/public/p/exposed/exposed")
}

特殊场景:必须使用0.34.1旧版本的适配方案

如果项目受限制无法升级Exposed版本,该版本仅支持JVM平台,不能放在commonMain中声明依赖:

  • 把Exposed相关依赖仅添加到jvmMain的依赖列表中
  • common层抽离数据库操作的抽象接口,JVM层用Exposed实现接口逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:24:02