Java引擎
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List; import javax.print.DocFlavor.URL;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; @SuppressWarnings("all") //压制所有的警告
public class Engine_GetRhino { public static void main(String[] args) {
// TODO Auto-generated method stub
//获得脚本引擎
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine=sem.getEngineByName("javascript"); //定义变量,存储到引擎的上下文
engine.put("msg", "you are very good"); String str = "var user = {name:'waibizi',age:18,schools:['肇庆学院','计算机学院']};";
str += "print(user.name);"; //执行脚本
try {
engine.eval(str);
engine.eval("msg='you are very bad';");
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //测试输出
System.out.println(engine.get("msg")); try {
//定义函数
engine.eval("function add(a,b){var sum = a + b; return sum;}");
engine.eval("function add1(){var sum = 123 + 321; return sum;}");
//执行函数
Invocable jsInvoke = (Invocable) engine;
Object result=jsInvoke.invokeFunction("add", new Object[] {15,13}); //指定函数赋值
Object result1=jsInvoke.invokeFunction("add1"); //指定函数赋值
System.out.println(result);
System.out.println(result1); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} try {
//js导入java的包,使用java的类 // 以下注释掉的代码是JDK1.6的,先已经抛弃了,看下面没注释的
// String jsCode = "importPackage(java.util); var list=Arrays.asList([\"肇庆学院\",\"计算机学院\",\"软件工程\"]);"; String jsCode = "var list=java.util.Arrays.asList([\"肇庆学院\",\"计算机学院\",\"软件工程\"]);";
engine.eval(jsCode);
List list = (List) engine.get("list");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} try {
java.net.URL url = Engine_GetRhino.class.getClassLoader().getResource("demo.js");
FileReader fr = new FileReader(url.getPath());
engine.eval(fr);
fr.close(); //由于只是测试,就不那么规范了。大家实际用时要使用try catch finally!
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
a.js如下
function test(){
var a=666;
print("invoke js file:"+a);
}
test();
Java引擎的更多相关文章
- [Drools]JAVA规则引擎 -- Drools- 转http://blog.csdn.net/quzishen/article/details/6163012
[Drools]JAVA规则引擎 -- Drools 标签: java引擎exceptiongetterstringsetter 2011-01-25 14:33 113340人阅读 评论(35) 收 ...
- Apache OFBiz 学习笔记 之 服务引擎 一
概述 服务定义为一段独立的逻辑顺序,当多个服务组合一起时可完成不同类型的业务需求 服务有很多类型,WorkFlow.Rules.Java.SOAP.BeanShell等.java类型的 ...
- java开发工具比较(16个工具修订版)
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
- 架构选型之Nodejs与Java
前言: 身边越来越多的同事谈论Nodejs,谈其异步IO.事件回调.前后台统一一门语言,创业的朋友的第一个创业项目也选择了Nodejs,期望能够使用一种语言节省成本快速完成需求开发.与其他项目组的同事 ...
- Android游戏引擎总汇 原文出处:http://software.intel.com/en-us/blogs/2012/03/13/game-engines-for-android?page=1
随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要.而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎.然而就目前为止游戏 ...
- 《JAVA与模式》之备忘录模式
一.备忘录(Memento)模式结构 备忘录对象是一个用来存储另外一个对象内部状态的快照(snapshot)的对象.备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来, ...
- 十四种Java开发工具点评
在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择.的确,这些工具各有所长,都没有绝对完美 ...
- Java开发工具全面比较
1.JDK (Java Development Kit)Java开发工具集 从初学者角度来看Java开发工具,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对 ...
- JAVA程序员常用开发工具
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
随机推荐
- StaticFileMiddleware 解析
说明:由于部分产品没有静态资源的管理,我突然想到能不能用现有的静态文件中间件的功能调整一下实现多组织件上传文件的隔离呢?那第一步先看懂 StaticFileMiddleware做了什么吧. ...
- python is 与==区别
总结 is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同.莱布尼茨说过:“世界上没有两片完全相同的叶子”,这个is正是这样的比较,比较是不是同一片叶子(即比较的id ...
- @RendSection{"scripts",require:false}的作用
MVC视图中,Javascripts代码被放于下面的Razor代码中(@section Scripts{}). 好处:在视图进行JavaScript编程时,是一个很好的实践,在共享视图(_Layout ...
- springBoot 2.1.5 pom 文件 unknown 错误
插件不兼容 pom文件添加 <properties> <maven-jar-plugin.version>2.6</maven-jar-plugin.version ...
- RN开发-Flex
1.容器属性 (1). display : flex | inline-flex (块级伸缩容器 | 行内级伸缩容器) (2). flex-direction : row ...
- AntDesign(React)学习-2 第一个页面
1.前面创建了第一个项目jgdemo,结构如下,使用TypeScript. 2.yarn start启动项目 3.点击GettingStarted是umi的官方网站 https://umijs.org ...
- COS上传图片和显示图片
写这篇文章之前,我也是刚刚实现COS上传和显示图片.我百度了好多相关文章,COS上传图片成功的文章不少,上传后显示图片的文章几乎没有.于是写一篇记录下. COS上传图片推荐链接:https://blo ...
- SpringBoot 测试基类
每次写单元测试都要重复写一些方法.注解等,这里我写了一下测试的基类 (1) 记录测试方法运行的时间 (2)两个父类方法 print,可打印list和object对象 (3)一个属性 logger 记录 ...
- ECMAScript基本语法——④变量
简介 变量:一小块存储数据的内存空间先申请了一块内存空间,规定空间的存储类型,给空间赋值3, 想找到这个3可以通过内存空间的地址值,但是通过地址值太麻烦了,给这个空间起了一个名字a 通过这个a可以找到 ...
- tensorflow-gpu安装
添加清华源(输入清华仓库镜像),可以提高下载速度: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/ ...