jdk1.8中nashorn不支持ECMAScript6的问题

背景

在项目中需要使用java调用javascript脚本,有两种方案,一种是faas,使用开源的openwhisk。另一种本地运行的方式,使用jdk的nashorn调用javascript,jdk版本为1.8。

但是在编写js脚本的时候使用了ECMAScript6中的新特性const和let。在执行的过程中报错了。

解决方法

原来jdk1.8中的nashorn默认支持的是ECMAScript5.1,而对于ECMAScript6相关特性的支持还不是很完善。但是可以通过jvm参数来开启jdk1.8对部分ECMAScript6新特性的支持。参数格式如下:

-Dnashorn.args=--language=es6

看了jdk的文档,从jdk9开始nashorn较好的支持了ECMAScript6。

如果有频繁的java调用javascript,并且javascript的脚本较复杂,建议还是上faas吧。更可控,而且更安全。性能也没有问题。

原文地址:https://www.cnblogs.com/junjiang3/p/10814763.html