【问题标题】:How to call Groovy script from Scala?如何从 Scala 调用 Groovy 脚本?
【发布时间】:2018-04-05 18:10:59
【问题描述】:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <facts>    
    <fact id="ItemPrice" displayName="Item Price">
    <defaultValue>0</defaultValue>
    <script><![CDATA[ 
            Double Value_Sales= 500;
            Double Unit_Sales= 10;
            Double res=Value_Sales/Unit_Sales;
            return res;
    ]]></script>
</fact>
</facts>

以上是用 xml 文件编写的用于查找商品价格的示例 groovy 脚本。

处理 Groovy 的 Java 代码:

List<Fact> factList = NREUtils.readXml("/SampleDictionary.xml") //cutome API
GroovyShell shell = new GroovyShell();
String scriptStr = factList.get(0).getScript();
Script groovyScript = shell.parse(scriptStr); // return "ItemPrice" script 
Binding binding = new Binding();
groovyScript.setBinding(binding);
Object val = groovyScript.run(); // **Result will be 50**

我想要相应的 Scala 代码。

【问题讨论】:

  • Stack Overflow 奖励努力。你试过什么?发布一些不起作用的代码,以便我们可以看到它偏离轨道的地方。
  • List factList = NREUtils.readXml("/SampleDictionary.xml") //cutome API GroovyShell shell = new GroovyShell();脚本 groovyScript = shell.parse(factList.get(0).getScript()); // 返回 "ItemPrice" 脚本 Binding binding = new Binding(); groovyScript.setBinding(绑定);对象 val = groovyScript.run(); // 结果将是 50
  • 请编辑您的问题以添加其他代码和信息。如您所见,在评论中发布代码是毫无意义的。 (edit 链接位于左下角,在您的问题标签下方。)

标签: scala groovy groovyscriptengine


【解决方案1】:

如果没有关于您的问题的更多信息,并且作为在 JVM 上执行的两种语言(scala 和 groovy),我建议您只编译您的 groovy 代码并将 jar 包含在运行您的 scala 代码的 JVM 的类路径中。

这里你有一些关于如何将 groovy 代码转换为可用字节码的想法:http://docs.groovy-lang.org/latest/html/documentation/tools-groovyc.html

然后像使用任何你想从 scala 调用的 java 库一样做:Using Java libraries in Scala

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多