You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JSR-223 API在Java中集成Groovy并配置自定义脚本基类

使用JSR-223配置Groovy自定义脚本基类的方法

JSR-223标准API本身没有直接提供配置Groovy脚本基类的接口,但Groovy的JSR-223实现(GroovyScriptEngineImpl)支持通过以下两种方式实现:

方法一:手动实例化GroovyScriptEngineImpl并传入自定义CompilerConfiguration

直接创建配置类并传入引擎构造方法,这种方式可控性最强:

// 1. 创建并配置CompilerConfiguration
CompilerConfiguration cfg = new CompilerConfiguration();
cfg.setScriptBaseClass(CustomScript.class.getName());

// 2. 手动实例化GroovyScriptEngineImpl
GroovyScriptEngineImpl engine = new GroovyScriptEngineImpl(cfg);

// 3. 执行脚本
Bindings bindings = engine.createBindings();
engine.eval("自定义脚本代码", bindings);

方法二:通过ScriptEngineManager获取后修改配置

如果依赖ScriptEngineManager获取引擎,可以向下转型后修改配置:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("groovy");

// 向下转型为GroovyScriptEngineImpl
if (engine instanceof GroovyScriptEngineImpl) {
    GroovyScriptEngineImpl groovyEngine = (GroovyScriptEngineImpl) engine;
    CompilerConfiguration cfg = groovyEngine.getCompilerConfiguration();
    cfg.setScriptBaseClass(CustomScript.class.getName());
    // 注意:多线程共享引擎时,修改配置可能引发线程安全问题,建议每个线程使用独立引擎实例
}

// 执行脚本
engine.eval("自定义脚本代码");

注意事项

  • CustomScript必须继承Groovy的Script类,且包含无参构造方法,否则脚本执行会报错。
  • 多线程场景下,建议为每个线程创建独立的GroovyScriptEngineImpl实例,避免配置被并发修改导致异常。

内容的提问来源于stack exchange,提问作者bug_moreclear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:32:39