我有一個代碼,它爲用戶界面使用Java Swing應用程序,但使用JavaScript文件來進行一些硬件測試。應用程序使用InvokeFunction()
方法調用JavaScript引擎來調用JavaScript中的函數。如何從Javascript(非服務器)調用Java方法
現在我使用LabJack API,它只適用於Java而不適用於JavaScript。我有一個工作代碼(我在Java上分開實現),但現在我需要JavaScript來調用該Java方法。
我的問題是,如果有一種方法,我們可以從JS代碼調用Java函數? 或者換句話說, 如果在JS執行此操作的等效方式,
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// JavaScript code in a String
String script1 = (String)"function hello(name) {print ('Hello, ' + name);}";
// evaluate script
engine.eval(script1);
Invocable inv = (Invocable) engine;
inv.invokeFunction("hello", "Scripting!!");
爲了進一步說明我可以給一個實際的例子。 JavaScript代碼正在呼叫IR Toy將紅外數據發送到指示燈。現在我需要收集光線產生的閃光次數。不幸的是,這隻能使用Java(我已經實現)完成。所以現在我需要從Javascript中調用這個Java方法,以便兩個進程都可以在一個測試中。
JavaScript引擎瓦特
實施例在Java 8中從舊的* Rhino *更改爲新的* Nashorn *,並且創建Java對象的方式發生了變化。一個通用的方式應該可以在兩者中工作,就是使用'Bindings'將Java對象傳遞給腳本。 JavaScript代碼然後可以調用該對象的任何公共方法。 – Andreas
你能在答案部分給出任何例子嗎?如何使用綁定? –