说明

在jdk11就标注了要取消NashornScriptEngineFactory类,在jdk17正式移除,所以在17上得加入pom依赖

        <dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.3</version>
</dependency>

效果图

代码

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 "";
} }

在java中动态执行js代码的更多相关文章

  1. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...

  2. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

  3. iOS中UIWebView执行JS代码(UIWebView)

    iOS中UIWebView执行JS代码(UIWebView) 有时候iOS开发过程中使用 UIWebView 经常需要加载网页,但是网页中有很多明显的标记让人一眼就能看出来是加载的网页,而我们又不想被 ...

  4. 在Delphi中高效执行JS代码

    因为一些原因,需要进行encodeURIComponent和decodeURIComponent编码,在Delphi中找了一个,首先是发现不能正确编码+号,后面强制处理替换了,勉强可用. 后面发现多次 ...

  5. 在VB中动态执行VBS代码,可操控窗体控件

    通过执行一段VBS代码来操控窗体内的控件也可以使用AddObject方法添加自己的类,那么在动态VBS代码中也一样可以使用在增加程序扩展性或是有脚本化需求的时候,这个方法还是不错的. Option E ...

  6. selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码

    目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...

  7. java中执行js代码

    要在java中执行js代码,首先明白,java不支持浏览器本身的方法.支持自定义的js方法,否则会报错 先新建一个js文件:jsss.js 内容如下: function aa(a,b){ return ...

  8. 在Java中执行js代码

    在某些特定场景下,我们需要用Java来执行Js代码(如模拟登录时,密码被JS加密了的情况),操作如下: ScriptEngineManager mgr = new ScriptEngineManage ...

  9. JDK1.8中如何用ScriptEngine动态执行JS

    JDK1.8中如何用ScriptEngine动态执行JS jdk1.6开始就提供了动态脚本语言诸如JavaScript动态的支持.这无疑是一个很好的功能,毕竟Java的语法不是适合成为动态语言.而JD ...

  10. UIWebView中Html中用JS调用OC方法及OC执行JS代码

    HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...

随机推荐

  1. 李沐动手学深度学习V2-chap_preliminaries

    李沐动手学深度学习V2 文章内容说明 本文主要是自己学习过程中的随手笔记,需要自取 课程参考B站:https://space.bilibili.com/1567748478?spm_id_from=3 ...

  2. 使用react-native-drawer,跟着官网配置仍报错,Error: [Reanimated] `valueUnpacker` is not a worklet, js engine: hermes

    在使用react-native-drawer组件时,编译项目报错 试了许多的方法,最后通过在一篇博客中找到解决方法https://blog.csdn.net/lxyoucan/article/deta ...

  3. Java24你发任你发,我用Java8

    大家好,我是晓凡. 各位 Java 开发者们!是不是还在为 Java 23 的新特性忙得焦头烂额? 别急,Java 24 已经悄咪咪地发布了! 这可是自 Java 21 以来的第三个非长期支持版本,而 ...

  4. Linux下磁盘分区调整(在不使用LVM的情况下)

    当硬盘分区不使用LVM的时候,将不能使用lvresize等指令调整 在调整分区之前,先来了解一下当前的磁盘分区信息1:使用Fdisk指令查看后发现sda1的分区有195309568个Sectors(扇 ...

  5. [每日算法 - 华为机试] leetcode690. 员工的重要性

    入口 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer.https://le ...

  6. 备份一个迭代查找TreeViewItem的辅助函数

    private TreeViewItem FindTreeItem(TreeViewItem item, Func<TreeViewItem, bool> compare) { if (i ...

  7. Golang 版本导致的容器运行时问题

    问题现场 用户反馈安装了某个 containerd 版本的节点无法正常拉起容器,业务场景是在 K8S Pod 里面运行一个 Docker,在容器里面通过 docker 命令再启动新的容器. 报错信息如 ...

  8. 6.4K star!轻松搞定专业领域大模型推理,这个知识增强框架绝了!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 「垂直领域大模型落地难?逻辑推理总出错?这个来自OpenSPG的开源框架,让专业领域知识服务 ...

  9. 信息资源管理文字题之“IT服务管理的理念以及ITIL管理体系中IT服务十大核心流程”

    一.阐述IT服务管理的理念以及ITIL(信息技术基础架构库)管理体系中IT服务十大核心流程 二.答案 答:IT服务管理的理念是:以流程为导向,以客户为中心 ITIL标准中归纳了两大类核心流程:服务支持 ...

  10. MYSQL的API

    1.函数的使用 常用函数(比较,分组,判断等) 截取函数:substring_index(目标字符串,分隔符,序号) 获取时间函数:TIMESTAMPDIFF(格式,开始时间,结束时间) 2.遇到的问 ...