kotlin - 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()
任何帮助表示赞赏。
解决方案
您可能使用 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
我希望这对你有帮助
推荐阅读
- java - 使用媒体播放器播放 .M3U 链接
- c# - 如何使用日期范围获取目录中的文件?
- nlog - Xml 配置中的 NLog default-target-parameters 不适用于以编程方式添加的文件目标
- python-3.x - Boto3 - get_change()、change_resource_record_set() INSYNC 需要 60 秒才能返回
- javascript - 使用函数访问类方法
- python - 从模型创建表单中的相关模型字段中删除“删除选定模型”按钮(Django 管理员)
- c# - 如何将公共(全局)变量分配给 SwitchCell 的 OnProperty(isOn 绑定)以检查是否启用了 SwichCell(打开)
- java - 在 Debug Shell 中执行代码时出现 Eclipse photon 错误
- permissions - 尽管设置了额外的权限,Odoo 11 用户仍无法创建新联系人
- couchdb - couchdb 的 Hyperledger Fabric 性能问题