为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试在 java 中运行 groovy 脚本

我正在尝试在 java 中运行 groovy 脚本

湖上湖 2023-11-10 16:15:30
我有一个已解析的 HTML 文件,其中有一个标签,里面有一个 groovy 脚本。我在字符串中有 groovy 脚本,我必须在运行时执行它并保留状态,以便以后可以使用它。任何人都知道如何:在java中运行groovy脚本保留该状态以供进一步使用。谢谢你!
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

该类groovy.util.Eval可能是在运行时动态执行 Groovy 的最简单方法。下面给出一个示例:


import groovy.util.Eval;


public class Goovy123 {

    public static void main(String[] args) {

        System.out.println(Eval.me("33*3"));//99

        System.out.println(Eval.me("'foo'.toUpperCase()"));//FOO

    }

}

我在项目中使用了以下 Maven 依赖项来获取所需的库:


<dependency>

    <groupId>org.codehaus.groovy</groupId>

    <artifactId>groovy-all</artifactId>

    <version>2.5.8</version>

    <type>pom</type>

</dependency>

更新:


我发布此更新是为了添加我原来的答案中缺少的州的示例。使用该类groovy.lang.Binding,您可以将状态保存在变量中并稍后在程序中使用它。下面给出一个示例:


import groovy.lang.Binding;

import groovy.lang.GroovyShell;

import groovy.util.Eval;


public class Goovy123 {

    public static void main(String[] args) throws InterruptedException {

        Binding binding = new Binding();

        String foo="foo";   

        binding.setVariable("foo", foo);

        GroovyShell shell = new GroovyShell(binding);

        System.out.println("Original state: "+binding.getVariable("foo"));

        shell.evaluate("foo=foo.toUpperCase();");

        System.out.println("Changed state: "+binding.getVariable("foo"));

    }

}


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信