在命令行中执行 JavaScript

现在我们有一个 my_script.js 文件,想在 Nashorn 下执行,则需要在命令行下执行该命令:

jrunscript my_script.js

jrunscript 还可以指定指定除了 Nashorn 以外的引擎,这里需要使用 -l 来显示指定:

jrunscript –l nashorn my_script.js

注意:

在 jrunscript 命令里,甚至可以执行其他的脚本语言,只要提供合适可用的脚本引擎。

jrunscript 提供了一些简单有限的功能,如果需要更多的功能,可以使用 jjs 命令。

使用Nashorn shell

Nashorn 中的 shell 命令是 jjs,它可以用来交互或非交互的环境中,用来替代 jrunscript。

我们先来演示最简单的例子(在命令行下):

PS C:\Users\TurtusLi> jjs
jjs> print("Hello, World!");
Hello, World!
jjs>

Nashorn 在 shell 下可以轻松地与 Java 保持互操作性。我们可以直接通过使用完全限定类名,从 JavaScript 访问 Jav a的类和方法。下面是一个访问 Java 内置的正则表达式的例子:

jjs> var pattern = java.util.regex.Pattern.compile("\\d+");
jjs> var myNums = pattern.split("a1b2c3d4e5f6");
jjs> print(myNums);
[Ljava.lang.String;@75f9eccc
jjs> print(myNums[0]);
a

注意:

当我们打印 myNums 这个 JavaScript 变量时,我们得到结果是[Ljava.lang.String;@75f9ecc,尽管在一个 JavaScript 变量,代表 myNums 真的是一个 Java 字符串数组。

下面介绍一下 jjs 命令的具体用法。

jjs [<options>] <files> [-- <arguments>]

以及常用选项的意义。

  • -cp(-classpath):指定 Java 的 classpath。
  • -doe(-dump-on-error):当 Nashorn 被迫退出时产生完整的错误转储。
  • -J:这个选项是传递给 JVM 用的。例如,如果我们想要增加 JVM 最大可用内存:
$ jjs -J-Xmx4g
jjs> java.lang.Runtime.getRuntime().maxMemory()
3817799680
  • -strict:使所有的脚本和函数中运行的 JavaScript 的严格模式。这是 JavaScript 的一个特性,是在 ECMAScript 第五个版本引入的这一特征,目的是减少缺陷和错误。严格模式建议在 JavaScript 中新的开发项目中使用,如果你不熟悉它,你应该阅读它。
  • -D:允许开发人员通过键值对作为系统属性传递给 Nashorn,在通常的方式下为 JVM 使用。 举例:
$ jjs –DmyKey=myValue
jjs> java.lang.System.getProperty("myKey");
myValue
  • v(-version):Nashorn 的系统版本号。通常等同于 JDK 的版本。
PS C:\Users\TurtusLi> jjs -v
Nashorn 1.8.0_102
  • -fv(-fullversion):Nashorn 的详细的系统版本号。
PS C:\Users\TurtusLi> jjs -fullversion
nashorn full version 1.8.0_102-b14
  • -fx: 作为一个 JavaFX GUI 应用程序执行脚本。这允许 JavaFX 程序员利用 Nashorn 少写很多样板。
  • -h:列出帮助信息。
  • -scripting:开启 Nashorn 规范的脚本扩展功能。

最新文章

  1. [译]:Orchard入门——部件管理
  2. POJ 3142 The Balance
  3. java collections读书笔记(8)collection框架总览(1)
  4. BZOJ 1005: [HNOI2008]明明的烦恼 Purfer序列 大数
  5. 最新 Sublime Text 3 Package Control 安装方法
  6. Mac 上Dock中添加“最近打开过的项目”(Recent Applications)
  7. PAT_1072 Gas Station
  8. Oracle存储过程中不支持DML语言的解决方法(针对遇见的DROP关键字)
  9. XML SAX解析
  10. 学习javascript基础知识系列第三节 - ()()用法
  11. 实现Android语音识别服务接口 RecognitionService的方法
  12. JavaScript DOM编程艺术-学习笔记(第十二章)
  13. 201521123115《Java程序设计》第13周学习总结
  14. HTML页面空格记录&amp;nbsp;&amp;ensp; &amp;emsp; (小计)
  15. RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
  16. 去重分页sql语句
  17. JSOUP 乱码处理
  18. 洛谷P4396 作业 [AHOI2013] 莫队
  19. Java如何写Common直接调用
  20. python基础学习14----正则表达式

热门文章

  1. android中XRecyclerView控件的使用
  2. 关于Chrome浏览器(Chrome Stable、 Chrome Canary 、Chromium)
  3. Microsoft&#174; SQL Server&#174; 2008 Express with Tools
  4. 关于LINUX在中断(硬软)中不能睡眠的真正原因
  5. filter中的DelegatingFilterProxy使用事例
  6. 【转】Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
  7. vue中的ajax - axios
  8. 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
  9. React-Native视频组件react-native-video使用(安卓版)
  10. iOS变量定义在 .h 还是 .m 中