Java调用各种脚本

脚本语言的支持
JSR223中规范了在Java虚拟机上运行的脚本语言与Java程序之间的交互方式。JSR233是JavaSE6的一部分,在Java表中API中的包是javax.script。目前Java虚拟机支持比较多的脚本语言,比较流行的有JavaScript、Scala、JRuby、Jython和Groovy等。

脚本包
Java 脚本功能是在 javax.script 包中。这是一个比较小的,简单的API。脚本的出发点是 ScriptEngineManager 类。一个 ScriptEngineManager 对象可以通过jar文件的服务发现机制发现脚本引擎。它也可以实例化脚本引擎来解释使用特定的脚本语言编写的脚本。使用脚本编程接口的最简单的方法如下:
1.创建一个 ScriptEngineManager 对象
2.从 ScriptEngineManager 获取 ScriptEngine 对象
3.使用 ScriptEngine的eval方法执行脚本

看几个例子

例1,”HELLO WORLD”

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

/**
 * 第一个例子, 执行脚本输出"Hello,World"
 * 通过 getEngineByName 方法得到一个JavaScript引擎实例。通过脚本引擎的eval方法来执行给定的JavaScript代码。
 */

public class EvalScript {

    public static void main(String[] args) throws Exception {
        // create a script engine manager
        ScriptEngineManager factory = new ScriptEngineManager();
        // create a JavaScript engine
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        // evaluate JavaScript code from String
        engine.eval("print('Hello, World')");
    }

}

例2,执行脚本文件

/**
 * 执行一个脚本文件
 *
 * 调用eval方法来接收java.io.Reader作为输入源, 读入的脚本被执行。
 */
public class EvalFile {


    public static void main(String[] args) throws Exception {
        // create a script engine manager
        ScriptEngineManager factory = new ScriptEngineManager();
        // create JavaScript engine
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        // evaluate JavaScript code from given file - specified by first argument
        engine.eval(new java.io.FileReader(args[0]));
    }


}

例3,脚本变量

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.File;


/**
 * 脚本变量
 * 当你的java应用程序嵌入脚本引擎和脚本时,你可能希望将您的应用程序中的对象作为全局变量暴露于脚本中。
 */
public class ScriptVars {

    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        File f = new File("test.txt");
        // expose File object as variable to script
        engine.put("file", f);

        // evaluate a script string. The script accesses "file"
        // variable and calls method on it
        engine.eval("print(file.getAbsolutePath())");
    }

}

参考:
Java语言的动态性支持(一)ScriptEngineManager
怎么通过java去调用并执行shell脚本以及问题总结
Java 脚本化编程指南

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值