java

位置:IT落伍者 >> java >> 浏览文章

Java调用JS脚本里的方法


发布日期:2023年01月01日
 
Java调用JS脚本里的方法
本例子使用了JDK 以上的javaxscript包通过Invocable接口实现JAVA调用JS脚本里的方法本例中调用分为内部执行脚本和外部执行脚本外部执行脚本分为不带参数调用和带参数调用主要采用invokeFunction方法调用

ObjectinvokeFunction(String name Object… args)

用于调用脚本中定义的顶层程序和函数

ObjectinvokeMethod(Object thiz String name Object… args)

对以前的脚本执行中已经编译的脚本对象(以 ScriptEngine 的状态保持)调用某一方法

package dejavase;

import javaxscriptInvocable;

import javaxscriptScriptEngineManager;

import javaxscriptScriptEngine;

import javaioFile;

import javaioReader;

import javaioFileReader;

public class AjavaInvokingFunction {

public static void main(String[] args) {

// 获得一个JavaScript脚本引擎也可以是ECMAScript脚本引擎

ScriptEngineManager manager = new ScriptEngineManager()

ScriptEngine engine = managergetEngineByName(JavaScript

String titlescript = function sayTitle() {

+ println(源码实例使用javaxscript调用JS脚本里的方法

+ println(

+ };

try {

// 调用内部脚本执行

engineeval(titlescript)

// 转换为Invocable

Invocable invocableEngine = (Invocable) engine;

// 不带参数调用sayTitle方法

invocableEngineinvokeFunction(sayTitle

// 调用外部脚本执行

// 创建JS文件的File对象并读入流

File functionscript = new File(ajavajs

Reader reader = new FileReader(functionscript)

// 开始执行ajavajs里的程序

engineeval(reader)

// 不带参数调用sayHello方法

invocableEngineinvokeFunction(sayHello

// 带参数调用sayHello方法

invocableEngineinvokeFunction(sayHello mark

} catch (Exception e) {

eprintStackTrace()

}

}

}

ajavajs文件

function sayHello(){

sayHello(null)

}

function sayHello(name){

if(name==null){

println(欢迎你!请注册Ajava会员

}else{

println(name+独立JAVA社区欢迎你

}

}

运行结果(控制台)

源码实例使用javaxscript调用JS脚本里的方法

               

上一篇:数据压缩格式Java语言应用程序设计方法

下一篇:避免在Java中使用Checked Exception