文档章节

Nashorn-在JAVA8中调用JAVASCRIPT与低版本JDK的区别

 灿烂涅槃
发布于 2017/04/24 22:30
字数 235
阅读 79
收藏 0

JAVA8中使用Nashorn代替了之前版本JDK中的Rhino,使用上略有不同,目前遇到的有两处

1、控制台输出:

Rhino中代码为

ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("javascript");

engine.put("msg", "Hi Script");

String str = "var user = {name:'ls',age:18,schools:['清华','北大']};";

str += "println(user.name);";

engine.eval(str);

可以正常运行。

但在JDK8中运行如上代码,会报如下错误

百度了类似问题,在Stack Overflow上有类似的问题,不过他使用的是alert,用的也是JDK7

,网址为http://stackoverflow.com/questions/11258888/referenceerror-alert-is-not-defined

改成print就正常了。

2、importPakage

Rhino中代码为

String jsCode = "importPackage(java.util); var list = Arrays.asList(\"aaa\",\"bbb\",\"ccc\");";
        engine.eval(jsCode);
        List<String> list = (List<String>) engine.get("list");
        for (String ls : list) {
            System.out.println(ls);
        }

在JDK8中运行报错

同样在Stack OverFlow中有类似问题http://stackoverflow.com/questions/22502630/switching-from-rhino-to-nashorn,解决方法为加上一句engine.eval("load(\"nashorn:mozilla_compat.js\");");

具体原理还需要进一步研究了

 

© 著作权归作者所有

粉丝 0
博文 1
码字总数 235
作品 0
沈阳
私信 提问
Java 8 Nashorn 引擎

Java 8 Nashorn 脚本引擎 java8 终于来了.函数式接口,lambda表达式期待很久了.新的武器在手,应该可以玩出新花样. 前两天无意中发现java8 中还带了另外一个有意思的东西. Nashorn 一个javascr...

架构梦想
2014/03/25
0
33
融合了 JavaScript 之力的 Nashorn 或被 JDK 11 弃用

还没有使用过 Nashorn ?如果感兴趣的话,建议尽快去尝试一下,因为 Jim Laskey 最近提交了一个新的 JEP 335 草案,准备弃用 Nashorn JavaScript 脚本引擎、API 以及该 jjs 工具。 从 JDK 6 ...

王练
2018/06/08
2.9K
19
JDK 11 进入特性冻结阶段,17 个最终 JEP 一览

JDK 11 已于6月底进入 Rampdown Phase One 阶段,这意味着该版本所有新的功能特性被冻结,不会再加入更多的 JEP 。该阶段将持续一个月,主要修复 P1-P3 级错误。JDK 11 定于2018年9月25日正式...

王练
2018/07/02
6.1K
31
JDK 11 进入 Rampdown 第二阶段,正式版已在路上

之前我们曾报道过 JDK 11 已于6月底进入 Rampdown Phase One 阶段,当时 JDK 11 的所有新特性就已被冻结,不再加入新的 JEP 。 就在前两天,JDK 11 进入 Rampdown Phase Two 。之前的第一阶段...

王练
2018/07/31
2.2K
8
Java 8新特性探究(十二)Nashorn :新犀牛

Nashorn是什么 Nashorn,发音“nass-horn”,是德国二战时一个坦克的命名,同时也是java8新一代的javascript引擎--替代老旧,缓慢的Rhino,符合 ECMAScript-262 5.1 版语言规范。你可能想jav...

OSC闲人
2014/07/13
0
28

没有更多内容

加载失败,请刷新页面

加载更多

使用kubeadm 搭建K8s集群

1. 参考官网 https://kubernetes.io/docs/setup/independent/install-kubeadm/

whhbb
34分钟前
2
0
Dubbo 3.0 !提升不止一点点!

Dubbo 自 2011 年 10 月 27 日开源后,已被许多非阿里系的公司使用,其中既有当当网、网易考拉等互联网公司,也不乏中国人寿、青岛海尔等大型传统企业。 自去年 12 月开始,Dubbo 3.0 便已正...

编程SHA
35分钟前
2
0
提升不止一点点,Dubbo 3.0 预览版详细解读

Dubbo 自 2011 年 10 月 27 日开源后,已被许多非阿里系的公司使用,其中既有当当网、网易考拉等互联网公司,也不乏中国人寿、青岛海尔等大型传统企业。更多用户信息,可以访问Dubbo @GitHub...

阿里云云栖社区
38分钟前
22
0
HanLP Analysis for Elasticsearch

基于 HanLP 的 Elasticsearch 中文分词插件,核心功能: 兼容 ES 5.x-7.x; 内置词典,无需额外配置即可使用; 支持用户自定义词典; 支持远程词典热更新(待开发); 内置多种分词模式,适合...

左手的倒影
今天
1
0
spark部署之yarn模式

spark部署之yarn模式 hadoop-3.0.0集群搭建 配置相应环境 java环境 scala(可配可不配) hadoop环境 从官网下载spark 解压 配置 /conf/spark-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_4...

jackmanwu
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部