我可以使用Java Scripting API将kotlin作为脚本运行 [英] Can I run kotlin as script with Java Scripting API
问题描述
我希望使用从java运行kotlin代码作为脚本Java脚本API 与javascript类似:
I want to run kotlin code as script from java with Java Scripting API similar to this for 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
Yes, it's possible starting from the Kotlin 1.1: http://kotlinlang.org/docs/reference/whatsnew11.html#javaxscript-support
此配置将Kotlin脚本引擎添加到我的Kotlin 1.2项目中:
This configuration adds Kotlin scripts engine to my Kotlin 1.2 project:
-
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个库:
< dependency>
< groupId> org.jetbrains.kotlin< / groupId>
< artifactId> kotlin-script-runtime< / artifactId>
< version> $ {kotlin.version}< / version>
< / dependency>
< dependency>
< groupId> org.jetbrains.kotlin< / groupId>
< artifactId> kotlin-script-util< / artifactId>
< version> $ {kotlin.version}< / version>
< / dependency>
更新:
从Kotlin 1.2.20开始 kotlin-script-util
明确不依赖于 kotlin-compiler
(参见< a href =https://youtrack.jetbrains.com/issue/KT-17561\"rel =nofollow noreferrer> https://youtrack.jetbrains.com/issue/KT-17561 )。因此应该提供另外一个模块(从示例项目中的构建文件):
< dependency>
< groupId> org.jetbrains.kotlin< / groupId>
< artifactId> kotlin-compiler-embeddable< / artifactId>
< version> $ {kotlin.version}< / version>
< / dependency>
Update:
Starting from Kotlin 1.2.20 kotlin-script-util
doesn't depend on kotlin-compiler
explicitly (see https://youtrack.jetbrains.com/issue/KT-17561). So one more module should be provided (as of the build file in example project):
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-compiler-embeddable</artifactId>
<version>${kotlin.version}</version>
</dependency>
这篇关于我可以使用Java Scripting API将kotlin作为脚本运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!