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

如何在Kotlin Multiplatform中通过Gradle导入本地Jar包?

Kotlin Multiplatform项目中导入本地Jar的可行方案

针对你遇到的JVM sourceSet无法识别本地Jar的问题,以下是几个经过验证的解决方法:

方案1:为每个JVM目标单独配置本地Jar依赖

你的项目包含jvm和desktop两个JVM目标,仅在jvmMain sourceSet中添加依赖可能无法覆盖所有JVM编译任务。直接在每个JVM目标的配置块中添加本地Jar依赖:

kotlin {
    jvm("desktop") {
        // 保留原有编译、测试配置
        dependencies {
            // 匹配libs目录下所有Jar
            implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
            // 或精准指定单个Jar
            // implementation(files("libs/your-target-jar.jar"))
        }
    }

    jvm("jvm") {
        // 保留原有编译配置
        dependencies {
            implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
        }
    }

    // 保留原有sourceSet配置
}

方案2:将本地Jar安装到本地Maven仓库

若该Jar需要长期使用,将其安装到本地Maven仓库是更稳定的方案,Gradle会像处理常规Maven依赖一样识别它,无需担心元数据缺失问题。

在项目根目录执行Maven命令(需本地安装Maven):

mvn install:install-file -Dfile=libs/your-target-jar.jar -DgroupId=原项目groupId -DartifactId=原项目artifactId -Dversion=原版本号 -Dpackaging=jar

替换命令中的groupId、artifactId、version为原Java项目的Maven坐标(若原项目有发布记录,直接复用即可)。

之后在Gradle依赖中添加:

implementation("原项目groupId:原项目artifactId:原版本号")

方案3:手动指定JVM编译的依赖属性

如果Jar确实缺少Gradle所需元数据,可以在JVM编译配置中明确声明依赖属性,确保编译任务能正确识别:

kotlin {
    jvm("desktop") {
        compilations.main.defaultDependencyConfiguration {
            attributes {
                attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
            }
            dependencies.add(project.dependencies.create(files("libs/your-target-jar.jar")))
        }
    }

    // jvm目标执行相同配置
}

额外排查要点

  • 确认libs目录位置:确保它在项目根目录下,或使用绝对路径(如project.rootDir.resolve("libs"))避免路径错误
  • 查看依赖树:执行./gradlew dependencies命令,检查JVM目标的依赖列表中是否包含本地Jar
  • 清理缓存后重建:执行./gradlew clean build,避免旧缓存导致的识别问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:03:33