如何从Scala调用Groovy脚本? 0

如何从Scala调用Groovy脚本? 0,scala,groovy,groovyscriptengine,Scala,Groovy,Groovyscriptengine,上面是用xml文件编写的用于查找商品价格的示例groovy脚本 用于处理Groovy的Java代码: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <facts> <fact id="ItemPrice" displayName="Item Price"> <defaultValue>0</defaultValue> <script

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

用于处理Groovy的Java代码:

<?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>
List factList=nretils.readXml(“/SampleDictionary.xml”)//CutomeAPI
GroovyShell shell=新的GroovyShell();
String scriptStr=factList.get(0.getScript();
脚本groovyScript=shell.parse(scriptStr);//返回“ItemPrice”脚本
绑定=新绑定();
groovyScript.setBinding(绑定);
Object val=groovyScript.run();//**结果将是50**

我希望相应的Scala代码也是如此。

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

在这里,您对如何将groovy代码转换为可用字节码有一些想法:


然后,像处理任何希望从scala调用的java库一样执行操作:

堆栈溢出奖励工作。你试过什么?发布一些不起作用的代码,这样我们就可以看到它偏离了轨道。List factList=nretils.readXml(“/SampleDictionary.xml”)//cutome API GroovyShell shell=new GroovyShell();Script groovyScript=shell.parse(factList.get(0.getScript());//返回“ItemPrice”脚本绑定=新绑定();groovyScript.setBinding(绑定);Object val=groovyScript.run();//结果将是50。请编辑您的问题以添加其他代码和信息。正如您所看到的,在注释中发布代码是毫无意义的。(编辑链接位于左下角,您的问题标签下方。)
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**