我正在尝试使用Java脚本API评估JVM内的Kotlin代码。
try {
ScriptEngineManager().getEngineByExtension("kts").let {
it.eval("val f: (CommandContext.()->Any?) = {\n${this.args.joinToString(" ")}\n}; return f") as (CommandContext.()->Any?)
}().let { embed.setDescription(it.toString()) }
} catch (ex: Exception) {
embed.setColor(Color.RED)
embed.setDescription(StringWriter().also { ex.printStackTrace(PrintWriter(it)) }.toString())
}
但是...ScriptEngineManager().getEngineByExtension("kts")
给我返回的是空值。我已经添加了META-INF/services
文件:
文档名称: javax.script.ScriptEngineFactory
档案内容: org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory
根据JetBrains的介绍,它可以完成工作:https : //github.com/JetBrains/kotlin/tree/master/libraries/examples/kotlin-jsr223-local-example
我只是通过添加来解决
compile 'org.jetbrains.kotlin:kotlin-compiler:1.3.11'
compile 'org.jetbrains.kotlin:kotlin-script-runtime:1.3.11'
compile 'org.jetbrains.kotlin:kotlin-script-util:1.3.11'
compile 'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.11'
对我的build.gradle
。
PS: 1.3.11是我的Kotlin版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句