jrunscript.exe 是 Java 平台的一部分,特别是与 JDK(Java Development Kit)一起提供的工具。它允许用户直接在命令行中运行 JavaScript 脚本,这些脚本通过 Java 的 javax.script 包中的 ScriptEngine 接口来执行。
以下是使用 jrunscript.exe 运行脚本的一般步骤:
(1)打开命令提示符或终端窗口。
(2)切换到包含要运行的脚本文件的目录,或者在命令中指定脚本文件的绝对路径。
(3)输入以下命令来运行脚本:
jrunscript your_script_file
其中,your_script_file 是脚本文件的名称,支持的脚本语言包括 JavaScript、Groovy 等。
jrunscript [options] [arguments...]
支持的命令如下:
-classpath <path> 指定查找用户类文件的位置
-cp <path> 指定查找用户类文件的位置
-D<name>=<value> 设置系统属性
-J<flag> 直接将 <flag> 传递给运行时系统
-l <language> 使用指定的脚本语言
-e <script> 评估指定脚本
-encoding <encoding> 指定脚本文件使用的字符编码
-f <script file> 评估给定的脚本文件
-f - 交互模式,从标准输入端读取脚本。如果使用,这应该是最后一个 -f 选项
-help 打印使用信息并退出
-? 打印此使用信息并退出
-q 列出所有可用的脚本引擎并退出
注意:
(1)如果存在 [arguments..],且未使用 -e 或 -f 选项,则第一个参数为脚本文件,其余参数(如果有)作为脚本参数传递。
(2)如果使用了 [arguments..] 和 -e 或 -f 选项,则所有 [arguments...] 都作为脚本参数传递。
(3)如果缺少 [arguments..]、-e、-f 选项,则使用交互模式。
(1)列出 jrunscript 命令可用的脚本引擎,如下:
D:\share_dir\ShareDoc> jrunscript -q Language ECMAScript ECMA - 262 Edition 5.1 implementation "Oracle Nashorn" 1.8.0_45
(2)使用交互模式运行 JavaScript 表达式,如下:
D:\share_dir\ShareDoc> jrunscript -f - nashorn> 1 + 10 11 nashorn> Math.ceil(9.7) 10.0 nashorn>
(3)使用 jrunscript 命令执行指定的 js 文件,例如执行当前目录下的 demo.js 文件,其中 demo.js 文件如下:
var a = 1; var b = 10; print(a + b); // 你可以进行更复杂的操作,与 Java 对象交互 print(java.lang.System.getProperty("java.version"));
启动命令提示符或终端,运行如下命令:
D:\share_dir\ShareDoc> jrunscript -f demo.js 11 1.8.0_45
(4)直接在命令行中运行 JavaScript 代码,而不是从文件中读取,如下:
D:\share_dir\ShareDoc> jrunscript -e "print('Hello, JRunScript!');" Hello, JRunScript!
(5)jrunscript 允许你通过命令行传递参数到 JavaScript 脚本中,但这些参数并不是直接赋值给 JavaScript 变量。然而,你可以使用 arguments 对象在 JavaScript 脚本中访问这些参数。但请注意,arguments 对象在 jrunscript 的上下文中可能与在普通的 JavaScript 函数中的行为略有不同。
要在 jrunscript 中使用命令行参数,你需要这样操作:
编写一个 JavaScript 脚本,该脚本可以处理 arguments 对象(尽管在 jrunscript 的全局上下文中它可能不是一个标准的 arguments 对象)。
通过命令行调用 jrunscript 并传递参数。
但是,由于 jrunscript 不直接支持像 Node.js 那样的命令行参数处理,你可能需要稍微调整你的脚本以适应这种差异。
以下是一个示例,展示了如何在 JavaScript 脚本中处理 jrunscript 的命令行参数:
// demo.js // 注意:这不是真正的 arguments 对象,但我们可以模拟它 var args = []; if (typeof arguments !== 'undefined') { // 如果 jrunscript 提供了 arguments 对象,使用它 args = Array.prototype.slice.call(arguments); } else { // 否则,尝试从全局环境中获取参数(这取决于 jrunscript 的实现) // 这里我们假设参数作为全局变量存在,但这不是标准行为 // 你可能需要查找 jrunscript 的具体文档来了解如何获取参数 // 注意:这只是一个示例,并不保证在所有版本的 jrunscript 中都有效 for (var i = 0; i < engine.getBindings(javax.script.ScriptContext.ENGINE_SCOPE).size(); i++) { var key = engine.getBindings(javax.script.ScriptContext.ENGINE_SCOPE).keys().next(); if (key.startsWith('arg')) { args.push(engine.getBindings(javax.script.ScriptContext.ENGINE_SCOPE).get(key)); } } } // 假设我们从命令行传递了两个参数,我们将它们转换为数字并相加 if (args.length >= 2) { var a = Number(args[0]); var b = Number(args[1]); print(a + b); } else { print('Not enough arguments provided.'); } // 与 Java 对象交互(注意:可能需要导入相关的 Java 类) print(java.lang.System.getProperty("java.version"));
在命令行中运行此脚本并传递参数可能类似于以下命令:
D:\share_dir\ShareDoc> jrunscript demo.js 10 20 30 1.8.0_45