// 调用内部脚本执行 engine eval(titlescript) // 转换为Invocable Invocable invocableEngine = (Invocable) engine // 不带参数调用sayTitle方法 invocableEngine invokeFunction( sayTitle ) // 调用外部脚本执行 // 创建JS文件的File对象 并读入流 File functionscript = new File( ajava js ) Reader reader = new FileReader(functionscript) // 开始执行ajava js里的程序 engine eval(reader) // 不带参数调用sayHello方法 invocableEngine invokeFunction( sayHello ) // 带参数调用sayHello方法 invocableEngine invokeFunction( sayHello mark ) } catch (Exception e) { e printStackTrace() } } } ajava js文件 function sayHello(){ sayHello(null) } function sayHello(name){ if(name==null){ println( 欢迎你!请注册Ajava会员 ) }else{ println(name+ 独立JAVA社区欢迎你 ) } } 运行结果(控制台) 源码实例 使用javax script调用JS脚本里的方法 lishixinzhi/Article/program/Java/hx/201311/26436
可参考:
package javaIjs
/**
* @param args
*/
import java.io.FileReader
import javax.script.Invocable
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
/**
* Java调用并执行js文件,传递参数,并活动返回值
*
* @author manjushri
*/
public class ScriptEngineTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager()
ScriptEngine engine = manager.getEngineByName("javascript")
String jsFileName = System.getProperty("user.dir")+"/src/javaIjs/expression.js"
// 读取js文件
FileReader reader = new FileReader(jsFileName)
// 执行指定脚本
System.out.println(engine.getContext().getReader())
engine.eval(reader)
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine
// 调用merge方法,并传入两个参数
// c = merge(2, 3)
Double c = (Double) invoke.invokeFunction("merge1", 21, 3)
System.out.println("c = " + c)
}
reader.close()
}
}