当前位置: 首页 > news >正文

Java执行JavaScript代码

Java执行JavaScript代码

 

这篇文章主要为大家详细介绍了Java执行JavaScript代码的具体操作方法,感兴趣的小伙伴们可以参考一下

我们要在Java中执行JavaScriptMethods.js中的execute(s1,s2)方法,JavaScriptMethods.js文件内容如下:

function execute(s1, s2){
  return s1 + s2;
}

首先需要定义一个接口,这个接口中给出与要执行的JavaScript方法一样的方法签名,我们定义接口Methods,它的内容如下:

/**
 * 接口中的方法签名必须与要执行的JavaScript方法一致
 * @author yuncong
 *
 */
public interface Methods {
  public String execute(String s1,String s2);
}

然后,就可以用脚本引擎执行JavaScriptMethods.js中execute(s1,s2)方法了,具体内容写在下面的ExecuteScript类中的:

import java.io.FileReader;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;


public class ExecuteScript {
  public static void main(String[] args) {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");
    try {
      String path = ExecuteScript.class.getResource("").getPath();
      System.out.println(path);
      // FileReader的参数为所要执行的js文件的路径
      engine.eval(new FileReader(path + "JavaScriptMethods.js"));
      if (engine instanceof Invocable) {
        Invocable invocable = (Invocable) engine;
        Methods executeMethod = invocable.getInterface(Methods.class);
        System.out.println(executeMethod.execute("li", "yuncong"));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

运行ExecuteScript类,输出如下: 

/C:/Users/yuncong/git/login/target/classes/executescript/ 
liyuncong

以上就是本文的全部内容,希望对大家的学习有所帮助。

 

 

 

 

 

 

 

https://m.jb51.net/article/81577.htm

转载于:https://www.cnblogs.com/lhp2012/p/8662164.html

相关文章:

  • c#数字图像处理(十一)图像旋转
  • C语言——第二次作业(2)
  • Mark
  • winform httpclient 多文件上传
  • 一维数组高效率解决杨辉三角
  • 使用 Except 和 Intersect
  • ES6 使用forEach遍历数组
  • 初学MySQL基础知识笔记--02
  • Shell报错bash^M /bin/bash^M: bad interpreter: No such file or directory
  • TFRecords文件的生成和读取(1)
  • lis最长递增子序列
  • Python全栈之路系列之深浅拷贝
  • mysql之count,max,min,sum,avg,celing,floor
  • 课堂小练习
  • 【题解】 [POI2012]FES-Festival (差分约束)
  • 10个最佳ES6特性 ES7与ES8的特性
  • CSS 提示工具(Tooltip)
  • C学习-枚举(九)
  • eclipse的离线汉化
  • gulp 教程
  • Javascript 原型链
  • JavaScript异步流程控制的前世今生
  • js
  • Material Design
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 大快搜索数据爬虫技术实例安装教学篇
  • 将 Measurements 和 Units 应用到物理学
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 通过git安装npm私有模块
  • 为什么要用IPython/Jupyter?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​2021半年盘点,不想你错过的重磅新书
  • #前后端分离# 头条发布系统
  • (8)STL算法之替换
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (区间dp) (经典例题) 石子合并
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)mysql_MYSQL(三)
  • (转)项目管理杂谈-我所期望的新人
  • .bat批处理出现中文乱码的情况
  • .NET 8.0 中有哪些新的变化?
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NetCore部署微服务(二)
  • .Net的C#语言取月份数值对应的MonthName值
  • .pyc文件是什么?
  • @EnableWebMvc介绍和使用详细demo
  • @Responsebody与@RequestBody
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [ARC066F]Contest with Drinks Hard