TOC
说明
@Test
public void testInvoke() throws ScriptException, NoSuchMethodException {
ScriptEngine engine = getEngine();
String jsResult = "hello ";
String param = "world";
String jsFunc = "function hello(param){return '"+jsResult+"' + '"+param+"' };";
engine.eval(jsFunc);
Invocable in = (Invocable)engine;
String result = (String) in.invokeFunction("hello",param);
Assertions.assertEquals(jsResult+param,result);
}
public ScriptEngine getEngine(){
ScriptEngine engine = new ScriptEngineManager().getEngineByName("graal.js");
Assertions.assertNotNull(engine);
return engine;
}
对应的关键依赖是:
<properties>
<graalvm-js.version>23.0.1</graalvm-js.version>
</properties>
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js</artifactId>
<version>${graalvm-js.version}</version>
</dependency>
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js-scriptengine</artifactId>
<version>${graalvm-js.version}</version>
</dependency>
上述是一个在 java 中调用 javascript 的简单示例,其中 javascript 的 function 接受一个参数并且将参数与另一个字符串拼接,然后作为结果返回.
微信公众号
扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。