使用javax.script.ScriptEngineManager在JVM中评估Kotlin的问题

内森·PB

我正在尝试使用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

内森·PB

我只是通过添加来解决

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解决java.lang.NoClassDefFoundError:使用javax / XML /绑定/ Java中JAXBException 9

使用2个相同类型的bean:Spring中的javax.sql.DataSource

使用哪一个?org.json中的JSONObject与javax.json中的JsonObject

使用javax.tools.JavaCompiler在内存中完全编译代码

Rhino和并发访问javax.script.ScriptEngine

为什么javax.sql包中的类使用新的String(str)?

Java 6:使用javax.script实现自己的脚本语言的示例?

使用xml中的公钥进行javax.xml.crypto.dsig验证

使用Microsoft SQL Server和Javax无法在Java中解析列[名称]。

在javax.script API中重定向KotlinScriptEngine的stdout

如何在Google App Engine中创建javax.el.ExpressionFactory以使用Hibernate Validator

使用javax邮件作为邮件时,某些CSS样式未在html中应用

如何使用javax.json读取JSON中的数组

使用django在html中的<script src = ..>中添加条件

在声明变量时引发问题,然后在Google Script中相互使用它们?

带有Java的JSR233采样器可与Selenium Webdriver一起使用(javax.script.ScriptException:在文件中:内联评估)

JSR223脚本,JSR223 PostProcessor中的问题:javax.script.ScriptException

Java中的JSON验证程序-使用javax.validation.constraints

在javax.swing中是否可以在一帧中为两个画家使用?

JavaApplication中的JavaScript评估:“ javax.script.scriptException:预期的操作数,但是找到了”

调用<script>中的内容还是使用JavaScript?

如何使用Gradle Script Kotlin添加新配置?

使用gradle-script-kotlin中的ant任务

Java - 与使用 javax.script.ScriptEngine 的 1.7 相比,Javascript 正则表达式代码在 1.8 上失败;

使用 javax.json 中的两个对象呈现 JSON

使用 Twurl 上传带有变量的图像的问题 - BASH SCRIPT

使用 javax.persistance 创建新实体的问题

使用 BeautifulSoup 从 <script> 变量中获取数据

使用 Google Apps Script for Spreadsheet 自动邮寄脚本的问题