2016-01-24 14 views
17

Zauważyłem, że IntelliJ może analizować pliki .kts jako Kotlin, a edytor kodu wybiera je jako swobodnie pływające pliki Kotlin. Jesteś również w stanie uruchomić skrypt w IntelliJ jak w pliku Kotlin z główną metodą. Skrypt wykonuje się od góry do dołu.Jak mogę uruchomić pliki Kotlin-Script (.kts) z poziomu Kotlin/Java?

Ten formularz jest PERFEKCYJNY dla projektu, nad którym pracuję, gdybym tylko znał łatwy sposób korzystania z nich z poziomu Java lub Kotlin.

Jaki jest idiomatyczny sposób na "uruchomienie" tych skryptów z Java lub Kotlin?

+2

można przyjrzeć https://github.com/cypressious/KotlinW. Zasadniczo wywołuje się kompilator za pomocą parametru -script. –

+0

@KirillRakhman Dziękuję, ale czy nie miałoby to wpływu na wydajność? Nie będziesz także mógł odwoływać się do funkcji, klas i innych elementów z poziomu Kotlin/Java. – Jire

+0

Jeśli to nie istnieje, czy byłoby możliwe zaimplementowanie poprzez wygenerowanie kodu bajtowego klasy z nazwą pliku i funkcją 'run', która zawierałaby zawartość? – Jire

Odpowiedz

19

Należy zauważyć, że obsługa plików skryptów w Kotlin wciąż jest eksperymentalna. Jest to nieudokumentowana funkcja, nad którą wciąż pracujemy. To, co dziś działa, może się zmienić, zepsuć lub zniknąć jutro.

To powiedziawszy, obecnie istnieją dwa sposoby wywoływania skryptu. Można użyć kompilatora wiersza polecenia:

kotlinc -script foo.kts <args> 

Albo można wywołać skrypt bezpośrednio z IntelliJ IDEA, klikając prawym przyciskiem myszy w edytorze lub w widoku projektu na .kts pliku i wybierając „Uruchom ... „:

Run .kts from IntelliJ IDEA

+2

Dzięki za oficjalne heads up. Mogę pracować nad czymś, aby wygenerować odpowiedni kod bajtowy dla tych skryptów, aby ich wykonywanie w Javie lub Kotlin było łatwe. – Jire

+0

@Alexander wszelkie wiadomości na temat skryptów z kotlin w aplikacjach uruchomieniowych? Chcielibyśmy zastąpić groovy skrypty uruchomieniowe kotlinami, jeśli to możliwe :) – Dodge

+0

@ Praca z skryptami Kotlin w środowisku wykonawczym za pomocą JSR 223 (Java scripting engines API) jest obecnie w toku. Możesz znaleźć przykład tego, co można osiągnąć dzisiaj na https://github.com/JetBrains/kotlin/tree/master/libraries/examples/kotlin-jsr223-local-example. Zaktualizuję odpowiedź, gdy tylko zostanie ona zaimplementowana i odpowiednio udokumentowana. –

Powiązane problemy