首页 > 解决方案 > Kotlinc 包含其他 jar 文件

问题描述

我想在 MacOS 上从命令行运行一个应用程序。问题是我想包含Gson在文件中以将我的数据类转换为 json 对象。(我是 kotlin 命令行新手)

为了简化,我使用以下内容:

fun main() {
    val item = Building(1, "Name", 4, 2)

    val jsonBuilding: String = Gson().toJson(item)
}

要在命令行中创建/运行我的代码,我使用:

>> kotlinc creator.kt -include-runtime -d creator.jar

>> java -jar creator.jar

现在我的问题是如何gson.jar将能够使用它的内容包含到应用程序中?

目前,我收到错误,因为它无法解决Gson()

creator.kt:37:16: error: unresolved reference: Gson
   val gson = Gson()

任何帮助表示赞赏。

标签: kotlinjarkotlinc

解决方案


您可能使用 Intellj IDEA。当你制作一个 JVM Gradle 命令行应用程序时,你应该在 build.gradle.kts 文件中使用以下代码。

tasks.withType<Jar> {
manifest {
    attributes["Main-Class"] = "com.your_project_package.MainKt"
}
// To add all of the dependencies
from(sourceSets.main.get().output)

dependsOn(configurations.runtimeClasspath)
from({
    configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
}

然后构建您的项目并从 gradle 任务中找到 Tasks->build->jar 单击它,仅此而已。你的项目文件夹中有你的 jar 文件,build->libs->project.jar。

现在您可以使用以下命令将您的 jar 文件作为 java jar 文件运行:

java -jar your_project_package.jar

例子

我希望这对你有帮助


推荐阅读