代码之家  ›  专栏  ›  技术社区  ›  Orion Edwards

是否可以在JVM或Android上使用Kotlin而不依赖于Kotlin stdlib?

  •  1
  • Orion Edwards  · 技术社区  · 5 年前

    我有一个Android库,我作为一个JAR文件分发,目前它有零依赖(除了内置到Java本身的东西)。我喜欢把它移植到Kotlin的想法,但是我还没能在不依赖于 kotlin-stdlib (或) kotlin-stdlib-jre7 等)

    我有点担心这样做,因为KotlinStdlib经常更新(有时每月多次),而且我不想引起未来的兼容性问题。

    显然,如果我使用任何特定于Kotlin的函数或类型(例如 listOf , mapOf 当然,我需要STDLIB,但是如果我坚持纯Java类型和函数,那么这是可能的吗?如果是这样,怎么办?

    1 回复  |  直到 5 年前
        1
  •  1
  •   nPn    5 年前

    我不确定这是你想要的,但我能够使用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
    

    我想如果你不包括标准的图书馆,你甚至不能使用科特林的 println 函数,所以你必须求助于Java System.out.println 方法