Можно ли использовать kotlin на JVM или Android без зависимости от kotlin-stdlib? - PullRequest
0 голосов
/ 20 января 2019

У меня есть библиотека Android, которую я распространяю в виде jar-файла; В настоящее время у него нет нулевых зависимостей (кроме вещей, встроенных в саму Java). Мне нравится идея перенести его на kotlin, однако я не смог понять, как это сделать без принудительной зависимости kotlin-stdlib (или kotlin-stdlib-jre7 и т. Д.)

Я немного настороженно отношусь к этому, потому что kotlin-stdlib очень часто получает обновления (иногда по несколько раз в месяц), и я не хочу вызывать проблему совместимости в будущем.

Очевидно, что если я использую какие-либо специфические функции или типы kotlin (например, listOf, mapOf и т. Д.), Тогда, конечно, мне понадобится stdlib, но если я придерживаюсь чисто java-типов и функций, то это возможно? И если да, то как?

1 Ответ

0 голосов
/ 20 января 2019

Я не уверен, что это то, что вы ищете, но я смог собрать и запустить эту простую программу, используя 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 функцию Kotlin, поэтому вы должны прибегнуть к System.out.println методу java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...