真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java執(zhí)行js代碼,java執(zhí)行js代碼內(nèi)存溢出

如何通過java代碼調(diào)用js

JDK1.6版添加了新的ScriptEngine類,允許用戶直接執(zhí)行js代碼。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的巴楚網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

在Java中直接調(diào)用js代碼

不能調(diào)用瀏覽器中定義的js函數(shù),會拋出異常提示ReferenceError: “alert” is not defined。

package com.sinaapp.manjushri;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import javax.script.ScriptException; /** * 直接調(diào)用js代碼 */

public class ScriptEngineTest {

public static void main(String[] args) {

ScriptEngineManager manager = new ScriptEngineManager();

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

try{

engine.eval("var a=3; var b=4;print (a+b);");

// engine.eval("alert(\"js alert\");"); // 不能調(diào)用瀏覽器中定義的js函數(shù) // 錯誤,會拋出alert引用不存在的異常

}catch(ScriptException e){

e.printStackTrace();

}

}

}

如何在java中調(diào)用js方法

在Java中調(diào)用js文件中的function,傳入調(diào)用參數(shù),并獲取返回值

js文件中的merge函數(shù)將兩個(gè)參數(shù)a,b相加,并返回c。

// expression.js

function merge(a, b) {

c = a * b;

return c;

}

在Java代碼中讀取js文件,并參數(shù)兩個(gè)參數(shù),然后回去返回值。

package com.sinaapp.manjushri;

import java.io.FileReader;

import javax.script.Invocable;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

/** * Java調(diào)用并執(zhí)行js文件,傳遞參數(shù),并活動返回值 * * @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); // 執(zhí)行指定腳本

engine.eval(reader);

if(engine instanceof Invocable) {

Invocable invoke = (Invocable)engine; // 調(diào)用merge方法,并傳入兩個(gè)參數(shù)

// c = merge(2, 3);

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

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

}

reader.close();

}

}

輸出結(jié)果:

c = 5.0

請問怎么寫java調(diào)用node環(huán)境運(yùn)行js代碼?

nodejs 運(yùn)行代碼可以在命令行中使用命令“ node /path/xxx.js ”來執(zhí)行

所以我們可以借助 java 的 Runtime 類,可以執(zhí)行系統(tǒng)本地的命令, 例如:

Linux系統(tǒng)下:Runtime.getRuntime().exec("node /path/xxx.js");

Window系統(tǒng)下:Runtime.getRuntime().exec("cmd /c node /path/xxx.js");

當(dāng)然推薦使用 Apache-Commons-Exec 工具類,可以屏蔽不同系統(tǒng)命令差異,并且獲取結(jié)果更簡單

工具類使用可以參考此文:?網(wǎng)頁鏈接


分享名稱:java執(zhí)行js代碼,java執(zhí)行js代碼內(nèi)存溢出
當(dāng)前URL:http://weahome.cn/article/hosdgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部