java代码中执行js java 执行js

如何在java中调用js方法

在Java中调用js文件中的function,传入调用参数,并获取返回值

创新互联主营印台网站建设的网络公司,主营网站建设方案,成都app软件开发公司,印台h5成都微信小程序搭建,印台网站营销推广欢迎印台等地区企业咨询

js文件中的merge函数将两个参数a,b相加,并返回c。

// expression.js

function merge(a, b) {

c = a * b;

return c;

}

在Java代码中读取js文件,并参数两个参数,然后回去返回值。

package com.sinaapp.manjushri;

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 = "expression.js"; // 读取js文件

FileReader reader = new FileReader(jsFileName); // 执行指定脚本

engine.eval(reader);

if(engine instanceof Invocable) {

Invocable invoke = (Invocable)engine; // 调用merge方法,并传入两个参数

// c = merge(2, 3);

Double c = (Double)invoke.invokeFunction("merge", 2, 3);

System.out.println("c = " + c);

}

reader.close();

}

}

输出结果:

c = 5.0

请问怎么写java调用node环境运行js代码?

nodejs 运行代码可以在命令行中使用命令“ node /path/xxx.js ”来执行

所以我们可以借助 java 的 Runtime 类,可以执行系统本地的命令, 例如:

Linux系统下:Runtime.getRuntime().exec("node /path/xxx.js");

Window系统下:Runtime.getRuntime().exec("cmd /c node /path/xxx.js");

当然推荐使用 Apache-Commons-Exec 工具类,可以屏蔽不同系统命令差异,并且获取结果更简单

工具类使用可以参考此文: 网页链接

java程序中运行js脚本

我们要在Java中执行JavaScriptMethods.js中的execute(s1,s2)方法,JavaScriptMethods.js文件内容如下:

function execute(s1, s2){

return s1 + s2;

}

首先需要定义一个接口,这个接口中给出与要执行的JavaScript方法一样的方法签名,我们定义接口Methods,它的内容如下:

/**

* 接口中的方法签名必须与要执行的JavaScript方法一致

* @author yuncong

*

*/

public interface Methods {

public String execute(String s1,String s2);

}

然后,就可以用脚本引擎执行JavaScriptMethods.js中execute(s1,s2)方法了,具体内容写在下面的ExecuteScript类中的:

import java.io.FileReader;

import javax.script.Invocable;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

public class ExecuteScript {

public static void main(String[] args) {

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("js");

try {

String path = ExecuteScript.class.getResource("").getPath();

System.out.println(path);

// FileReader的参数为所要执行的js文件的路径

engine.eval(new FileReader(path + "JavaScriptMethods.js"));

if (engine instanceof Invocable) {

Invocable invocable = (Invocable) engine;

Methods executeMethod = invocable.getInterface(Methods.class);

System.out.println(executeMethod.execute("li", "yuncong"));

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

运行ExecuteScript类,输出如下:

?

1

2

/C:/Users/yuncong/git/login/target/classes/executescript/

liyuncong


网站标题:java代码中执行js java 执行js
文章地址:http://azwzsj.com/article/ddogdhp.html