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

Kotlin/Native项目添加Guava依赖后无法导入类的问题

问题原因

Guava的32.1.3-jre版本是仅针对JVM平台的Java字节码依赖,而你的项目包含Kotlin/Native目标(linuxX64、mingwX64)。Kotlin/Native无法直接使用Java的JAR包,你在commonMain中添加Guava依赖,会导致原生平台构建时无法解析Java类,从而抛出Unresolved reference: com错误。

而kotlinx.collections.immutable是官方提供的多平台库,对JVM、Native等目标都有适配,所以能正常导入使用。

解决方案

方案1:仅在JVM平台使用Guava

如果你的Guava使用场景只限于JVM目标,把Guava依赖从commonMain移到jvmMain中:

修改后的sourceSets配置:

sourceSets {
    get("commonMain").apply {
        dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.6")
            // 移除这里的Guava依赖
        }
    }
    // ... 其他sourceSet配置不变
    get("jvmMain").apply {
        dependsOn(sourceSets["commonMain"])
        dependencies {
            // 仅JVM平台添加Guava依赖
            implementation("com.google.guava:guava:32.1.3-jre")
        }
    }
}

同时删除根级别dependencies块中的Guava配置(多平台项目依赖应配置在对应sourceSet下)。

之后在JVM平台的代码中可以正常导入使用Guava,而Native平台代码则避免使用Guava类。

方案2:为Native平台找替代方案

如果Native平台也需要类似ImmutableDoubleArray的功能,可选择以下方式:

  • 使用kotlinx.collections.immutable提供的不可变集合类,比如ImmutableList<Double>,它对Native平台完全支持
  • 自行实现一个轻量的不可变双精度数组类,适配Native平台
  • 寻找支持Kotlin/Native的第三方不可变集合库
验证操作

修改配置后,执行以下命令重新构建:

gradle clean build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:05:55