如何从Scala调用Groovy脚本?

时间:2018-04-04 07:19:20

标签: scala groovy groovyscriptengine

<?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代码。

1 个答案:

答案 0 :(得分:0)

如果没有关于你的问题的更多信息,并且是通过JVM执行的两种语言(scala和groovy),我建议你只需要编译你的groovy代码并将jar包含在运行scala代码的JVM的类路径中。 / p>

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

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