我有一个以jar文件分发的android库;当前,它具有零依赖关系(除了Java本身内置的东西之外)。我喜欢将其移植到Kotlin的想法,但是在不强制依赖kotlin-stdlib
(或kotlin-stdlib-jre7
等)的情况下,我一直想不出办法
我对此有些警惕,因为kotlin-stdlib经常获得更新(有时每月多次),并且我不想引起将来的兼容性问题。
很明显,如果我使用任何kotlin特定的函数或类型(例如listOf
,mapOf
等),那么我当然需要stdlib,但是如果我坚持使用纯Java类型并且功能,那么这可能吗?如果可以,怎么办?
答案 0 :(得分:1)
我不确定这是否是您要寻找的东西,但是我能够使用IntelliJ Idea 2018.3来构建并运行此简单程序
fun main() {
System.out.println("hello world")
}
以及以下build.gradle文件
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.3.11'
}
apply plugin: 'application'
mainClassName = "MainKt"
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
我在jar文件中看到的除了META-INF文件夹之外的唯一东西是我的MainKt.class 我可以使用
在jvm上运行它java -classpath simple.jar MainKt
我认为,如果您不包括标准库,您甚至无法使用Kotlin的println
函数,因此您必须诉诸于Java的System.out.println
方法