gpt4 book ai didi

java - 如何使用 scala 作为脚本语言设置 jsr223 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:33 27 4
gpt4 key购买 nike

到目前为止,我已经为 scala 的 jsr223 脚本尝试了 sling 实现,但无法正确设置它。 当我这样做时:

public static void main(String[] args) {
try {
new ScriptEngineManager().getEngineByName("scala").
eval("object HelloWorld {def main(args: Array[String]) {
println(\"Hello, world!\") }}");
} catch (ScriptException e) {
e.printStackTrace();
}
}

除了:

javax.script.ScriptException: ERROR 
org.apache.sling.scripting.scala.Script line 13 : not found: type
Script at org.apache.sling.scripting.scala.ScalaScriptEngine.eval(ScalaScriptEngine.scala:117)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)

这里讨论了类似的问题: http://scala-programming-language.1934581.n4.nabble.com/How-to-compile-Scala-code-from-java-using-the-current-ClassLoader-instead-of-a-string-based-classpat-td1955873.html#a1955873

http://dev.day.com/discussion-groups/content/lists/sling-dev/2009-12/2009-12-01_Scala_scripting_support_was_Re_And_another_one____Michael_D_rig.html

也许还有另一个我不知道的实现。

感谢任何帮助

最佳答案

查看 Apache Sling 的 scala/script 模块中的测试用例一个工作的例子。脚本及其入口点(即对象)需要遵循某些约定。如果以后需要,我会提供更多关于这些的信息。

有关脚本引擎的一般概述,请参阅 my session slides from Scala Days 2010 .

更新:脚本必须采用以下形式:

package my.cool.script {
class foo(args: fooArgs) {
import args._ // import the bindings
println("bar:" + bar)
}
}

args 的类型是 generated by the script engine并以附加“Args”的脚本的简单类名命名。该示例进一步假设 Bindings用于脚本评估的传递包含名称“bar”的值。有关详细信息,请参阅关于 ScalaScriptEngine 的类评论.

您需要将脚本类的名称传递给脚本引擎。为此,您可以将完全限定的脚本名称(即 my.cool.script.foo)放入 ScriptContext 中。通过名称“scala.script.class”。

关于java - 如何使用 scala 作为脚本语言设置 jsr223 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com