Java 工具集教程

jrunscript.exe 运行脚本

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

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号