我可以使用Java Scripting API作为脚本运行kotlin吗?

我想运行Kotlin代码作为脚本从Java与Java脚本API类似于这样的javascript:

import javax.script.*; public class EvalScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // evaluate JavaScript code from String engine.eval("print('Hello, World')"); } } 

或类似的API这样的。

是的,可以从Kotlin 1.1开始: http : //kotlinlang.org/docs/reference/whatsnew11.html#javaxscript-support

这个配置将Kotlin脚本引擎添加到我的Kotlin 1.2项目中:

  • META-INF/services/javax.script.ScriptEngineFactory文件,内容来自https://github.com/JetBrains/kotlin/blob/master/libraries/examples/kotlin-jsr223-local-example/src/main/resources /META-INF/services/javax.script.ScriptEngineFactory

  • 2个库: org.jetbrains.kotlin kotlin-script-runtime ${kotlin.version} org.jetbrains.kotlin kotlin-script-util ${kotlin.version}

更新:从Kotlin 1.2.20开始, kotlin-script-util不显式依赖kotlin-compiler (请参阅https://youtrack.jetbrains.com/issue/KT-17561 )。 因此,应该提供另外一个模块(如示例项目中的构建文件 ): org.jetbrains.kotlin kotlin-compiler-embeddable ${kotlin.version}

计划对Java脚本API的Kotlin支持,但从1.0.3版本开始尚不可用。 同时,您可以尝试使用现有的开源实现 。