2016-01-24 17 views
17

Ho notato che IntelliJ può analizzare i file .kts come Kotlin e l'editor di codice li preleva come file Kotlin flottanti. Puoi anche eseguire lo script in IntelliJ come se fosse un file Kotlin con un metodo principale. Lo script viene eseguito dall'alto verso il basso.Come posso eseguire file Kotlin-Script (.kts) da Kotlin/Java?

Questo modulo è PERFETTO per il progetto su cui sto lavorando, se solo sapessi un modo semplice per usarli da Java o Kotlin.

Qual è il modo idiomatico di "eseguire" questi script da Java o Kotlin?

+2

È possibile dare un'occhiata a https://github.com/cypressious/KotlinW. Fondamentalmente si richiama il compilatore con il parametro -script. –

+0

@KirillRakhman Grazie, ma questo non ha implicazioni sulle prestazioni? Inoltre, non sarebbe possibile fare riferimento a funzioni, classi e altro da Kotlin/Java. – Jire

+0

Se questo non esiste, sarebbe possibile implementare generando bytecode di una classe con il nome del file e una funzione come 'run' che ospiterà il contenuto? – Jire

risposta

19

Nota che il supporto dei file di script in Kotlin è ancora abbastanza sperimentale. Questa è una funzionalità non documentata che siamo ancora in fase di progettazione. Ciò che funziona oggi potrebbe cambiare, rompersi o scomparire domani.

Detto questo, attualmente ci sono due modi per invocare uno script. È possibile utilizzare il compilatore della riga di comando:

kotlinc -script foo.kts <args> 

Oppure si può richiamare lo script direttamente da IntelliJ IDEA, facendo clic destro nell'editor o nella finestra del progetto su un file .kts e selezionando "Esegui ... ":

Run .kts from IntelliJ IDEA

+2

Grazie per l'avviso ufficiale. Potrei lavorare su qualcosa per generare un bytecode corretto per questi script, in modo da renderli un gioco da ragazzi in Java o Kotlin. – Jire

+0

@Alexander tutte le notizie sullo scripting con kotlin nelle app di runtime? Vorremmo sostituire groovy gli script di runtime con kotlin se possibile :) – Dodge

+0

@Dodge che esegue gli script di Kotlin in fase di esecuzione tramite la JSR 223 (API dei motori di scripting Java) è attualmente in corso. Puoi trovare un esempio di cosa è possibile ottenere oggi su https://github.com/JetBrains/kotlin/tree/master/libraries/examples/kotlin-jsr223-local-example. Aggiornerò la mia risposta non appena sarà implementata e adeguatamente documentata. –

Problemi correlati