a.js

//定义test方法
function test(){var a = 3;var b = 4;println("invoke js file:"+(a+b));
}
//执行test方法
test();
import java.io.FileReader;
import java.net.URL;
import java.util.List;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;/*** 测试脚本引擎执行javascript代码* @author**/
public class Demo01 {public static void main(String[] args) throws Exception {//获得脚本引擎对象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");//定义变量,存储到引擎上下文中engine.put("msg", "gaoqi is a good man!");String str = "var user = {name:'zs',age:18,schools:['清华大学','北京大学']};";str += "println(user.name);";//执行脚本engine.eval(str);engine.eval("msg = 'qh is a good school';");System.out.println(engine.get("msg"));System.out.println("###########################");//定义函数engine.eval("function add(a,b){var sum = a + b; return sum;}");//取得调用接口Invocable jsInvoke = (Invocable) engine;//执行脚本中定义的方法Object result1 = jsInvoke.invokeFunction("add", new Object[]{13,20});System.out.println(result1);//导入其他java包,使用其他包中的java类.若需要深入了解细节,可以详细学习Rhino的语法String jsCode = "importPackage(java.util); var list=Arrays.asList([\"人民大学\",\"清华大学\",\"北京大学\"]);";engine.eval(jsCode);List<String> list2 = (List<String>)engine.get("list");for (String temp : list2) {System.out.println(temp);}//执行一个js文件(我们将a.js至于项目的src下即可)URL url = Demo01.class.getClassLoader().getResource("a.js");FileReader fr = new FileReader(url.getPath());engine.eval(fr);fr.close();   //由于只是测试,就不那么规范了。大家实际用时要使用try catch finally!}
}

Rhino(js的java实现组件)相关推荐

  1. java rhino js类_让Rhino JS看Java类

    我正在玩 Rhino,我已经成功使用了stdlib中的Java类,但没有使用我编译的Java代码. 例如,这工作正常: print(new java.util.Date()); 但是使用NanoHTT ...

  2. 跨平台实现基础(二)JavascriptInterface原理和Js和Java交互实践

    作者:Tamic 更多文章关注开发者技术前线 上一篇<JsCore 原理和实践> 前言 谷歌提供的系统组件WebView,用来加载和展现html网页,其采用webkit内核驱动,来实现网页 ...

  3. JS - 文件上传组件WebUploader使用详解1(带进度的文件上传

    一.基本介绍 1,什么是 WebUploader? WebUploader 是由百度公司团队开发的一个以 HTML5 为主,FLASH 为辅的现代文件上传组件. 官网地址:http://fex.bai ...

  4. 移动端cube界面设计html,滴滴开源基于 Vue.js 的移动端组件库 cube-ui

    原标题:滴滴开源基于 Vue.js 的移动端组件库 cube-ui 开源最前线(ID:OpenSourceTop) 猿妹 整编 综合自:https://didi.github.io/cube-ui/ ...

  5. iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库

    iView 3.3.0 发布了,代号 Transistor ,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品. 本次更新如下: https://www ...

  6. vue 公用页面引用_关于vue全局引用公共的js和公共的组件的折腾

    前沿 最近在项目开发中遇到一些需要全局引用的公共js,或者公共组件,早就烦死了那种每个页面都写一遍,都引用一个js的写法,正好vue解决了这个额问题,于是乎就开始折腾,折腾的过程中也发现了一些自己之前 ...

  7. java swing 组件技术(上)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次写自己的博客,明知道写得很水,还是努力去写了,希望踏出第一步之后,能有着更好的发展.这几天看了一些资料,总结了一下自己所 ...

  8. 在 Java EE 组件中使用 Camel Routes

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:你可以通过集成 Camel 和 WildFly 应用服务器(使用 WildFly-Camel 子系统)在 Java EE ...

  9. webview js 与 java 调用参数问题。

    最近使用到WebView嵌套网页的方式做了一个Android应用,遇到了js与java native方法调用的问题. 1.新版本在js调用java方法时调用失败,主要原因是需要在设置的java方法中增 ...

最新文章

  1. 十个同学想一起去周边城市两日游,分析方案的多/快/好等方面,并选择一种说明理由...
  2. 软件测试报告重点审核点有哪些,软件测试-测试报告.doc
  3. bug:刷机卡Logo界面,adb shell 报- exec '/system/bin/sh' failed: No such file or directory (2) -
  4. 细说php精要版 百度云,细说php精要版
  5. 2022CCPC网络预选赛题解
  6. gRPC Name Resolution
  7. Error Code: 1054. Unknown column 'xxx' in 'field list'
  8. (七)设定目标:原理与方法
  9. 【快代理API】获取隧道代理IP
  10. APP优化 启动速度优化
  11. mvn编译“Cannot find matching toolchain definitions for the following toolchain types“报错解决方法
  12. cdq分治 学习笔记
  13. Ubuntu 安装截图工具 Shutter
  14. 深度学习笔记(6)BatchNorm批量标准化
  15. 基于函数微分推导出的5个近似公式
  16. IMPERVA --- 磁盘空间不足
  17. 三维点云:PCA(下)open3d
  18. (转)IBM MQ 创建以及常见问题集锦
  19. EOS版truffle测试框架js4eos上线了,合约一键自动化测试
  20. 当vue3+vite创建的项目,报错“找不到模块“@/utils/index”或其相应的类型声明”

热门文章

  1. mysql 存储过程
  2. 【九】注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)
  3. 对Excel或者其他office操作推荐使用NPOI
  4. 解决MyEclipse里Tomcat端口被占用而无法启动的情况
  5. 网站防盗链就是那么简单
  6. 关闭主窗口,启动另一个窗口
  7. 映射网络驱动器 net use
  8. [Web 前端] MobX
  9. 什么是平板电脑的杀手锏?
  10. PostgreSQL 主从差异查看