说明
在jdk11就标注了要取消NashornScriptEngineFactory类,在jdk17正式移除,所以在17上得加入pom依赖
org.openjdk.nashorn
nashorn-core
15.3
效果图
代码
package cn.myauthx.api;
import org.junit.jupiter.api.Test;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class test {
@Test
public void test(){
String jsStr = "function sum(c1,c2){n" +
"treturn c1+c2;n" +
"}";
String ret = "";
System.out.println(runJs(jsStr,"sum","a","b"));
}
/**
* 执行JS函数,参数和返回值都是String类型
* @param jsStr
* @param func
* @param parameter
* @return
*/
public String runJs(String jsStr,String func,String...parameter){
String regular = jsStr;
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); //创建引擎实例
Object result = "";
try {
engine.eval(regular); //编译
if (engine instanceof Invocable) {
result = ((Invocable) engine).invokeFunction(func, parameter); // 执行方法
return String.valueOf(result);
}
} catch (Exception e) {
return "表达式runtime错误:" + e.getMessage();
}
return "";
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: #WPS AI# 有了AI,我们真的就可以“为所欲为”了?
先讲两个故事。 故事一: 一群志同道合的同学决定合作写一本约700页的书,其中一个同学花了十几分钟的时间做了个Word模板,又花了不到半小时的时间给大家培训了一下模板的使用方法,然后大家就各自去写了。三个月后,图书出版。 在这个故事中,所有排版的时间加起来,不…