javajs命令(js調用java)

本文目錄一覽:

請問怎麼寫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課程分享JavaScript代碼測試必備的12款工具

1、Jasmine

Jasmine是一個行為驅動的測試開發框架,用於對JavaScript代碼進行測試。它不依賴其它任何JavaScript框架,也不需要DOM。它的語法簡潔、明確,寫測試非常容易。

2、Mocha

Mocha是一個功能豐富的JavaScript測試框架,既運行於Node.js環境中,也可以運行於瀏覽器環境中。Mocha以串行方式運行測試,能做出靈活而準確的報告,也能將測試中未捕捉的異常映射到正確的測試用例。

3、Chai

Chai是個支持BDD/TDD的庫,可用於node和瀏覽器,可配合任何JavaScript測試框架使用。

4、QUnit

QUnit是個功能強大又易於使用的JavaScript單元測試框架。jQuery、jQueryUI和jQueyMobile項目都使用這個框架,它能測試普通的JavaScript代碼。

5、Sinon

Sinon.JS為JavaScript提供了獨立的spies、stubs和mocks[譯者註:Spy、Stub和Mock都是測試專用名詞,Stub常被翻譯為樁,spies是Spy的複數形式,是一種可以監視方法、調用和參數的技術]。它不依賴任何東西,可以配合任何單元測試框架工作。

6、Karma

Karma是針對連通瀏覽器的一個框架無關測試運行器。每一個測試結果對應每個瀏覽器,它的測試和顯示都是通過命令行暴露給開發者的,這樣他們就可以看到瀏覽器測試的通過或失敗。

7、Selenium

Selenium有一個簡單的目標:就是自動化瀏覽器。它主要用於自動化測試web應用程序,但是只是很簡單地考慮到了基於網絡的管理任務。

8、WebdriverIO

WebdriverIO允許用戶僅添加幾行代碼就可以控制瀏覽器或移動應用程序,使測試代碼更簡單、簡潔、易讀。集成的TestRunner同樣允許你以同步的方式調用異步命令,這樣你不需要關心如何處理Promise以避免競態條件。此外,它取消了所有的繁瑣的設置工作,並且會為您管理的Selenium會話。

9、Nightwatch

Nightwatch.js是一個易於使用的Node.js,它是為基於瀏覽器的app和網站設計的終端到終端(E2E)的測試方法。它使用強大的W3CWebDriverAPI,用於在DOM元素上執行命令和斷言。

10、PhantomCSS

PhantomCSS獲得CasperJS捕獲的屏幕截圖,並使用Resemble.js將其與基準圖進行對比,以測試RGB像素差異。java課程發現PhantomCSS然後生成圖像差異對比,用於幫助您找到原因。

11、PhantomFlow

PhantomFlow使用決策樹提供UI測試方案。針對PhantomJS,CasperJS和PhantomCSS的NodeJS包裝器——PhantomFlow能夠流暢地在代碼中描述用戶流程,同時生成用於可視化的結構化樹數據。

java程序中運行js腳本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

public class ExecJs {

/**

* 記錄日誌類

*/

private Logger log = Logger.getLogger(ExecJs.class);

/**

* 後置處理,執行js腳本

* @param js

* @throws Exception

*/

public void execJs(String js, MapString,Object map) throws Exception {

if (log.isDebugEnabled()) {

log.debug(“execJs js : ” + js);

IteratorEntryString, Object it = map.entrySet().iterator();

while (it.hasNext()) {

EntryString, Object entry = (EntryString, Object) it.next();

log.info(“EXECJS MAP : ” + entry.getKey() + “—” + entry.getValue());

}// end while

}// end if

if (“”.equals(js) || js == null) {

log.info(“EXECJS ERROR : JAVASCRIPT CONTENT IS NULL”);

} else if(map == null || map.size()=0){

log.info(“EXECJS ERROR : MAP CONTENT IS NULL”);

} else {

// 獲取腳本引擎

ScriptEngineManager mgr = new ScriptEngineManager();

ScriptEngine engine = mgr.getEngineByName(“javascript”);

// 綁定數據

ScriptContext newContext = new SimpleScriptContext();

Bindings bind = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

bind.putAll(map);

try {

engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);

engine.eval(js);

} catch (Exception e) {

log.info(“EXECJS EXCEPTION : EXECUTE JAVASCRIPT EXCEPTION”, e);

throw (e);

}// end try

}// end if

}

}

如何通過java代碼調用js

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

在Java中直接調用js代碼

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

package com.sinaapp.manjushri;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import javax.script.ScriptException; /** * 直接調用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\”);”); // 不能調用瀏覽器中定義的js函數 // 錯誤,會拋出alert引用不存在的異常

}catch(ScriptException e){

e.printStackTrace();

}

}

}

如何在java中調用js方法

在Java中調用js文件中的function,傳入調用參數,並獲取返回值

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

原創文章,作者:VMVF,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/137760.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VMVF的頭像VMVF
上一篇 2024-10-04 00:18
下一篇 2024-10-04 00:18

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論