将外部库与 Nashorn Javascript 引擎一起使用
Using external library with Nashorn Javascript Engine
我尝试将 Google 地图 Api 与 Nashorn 一起使用。但它似乎无法识别 api.
豆子
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader(FacesContext.getCurrentInstance().getExternalContext().getResource("/resources/js/MapGoogle/functions.js").getFile()));
Invocable invocable = (Invocable) engine;
Object result = invocable.invokeFunction("myFunction","param1");
functions.js
var myFunction = function(param1) {
var directionsService = new google.maps.DirectionsService();
return "";
};
错误:
javax.el.ELException: javax.script.ScriptException:
ReferenceError: "google" is not defined in <eval> at line number 9
如何添加此库以便 Nashorn 可以与 Google 地图 Api 一起工作?
我建议替换这一行:
var directionsService = new google.maps.DirectionsService();
使用以下行:
var directionsService = new Packages.google.maps.DirectionsService();
由于class包既不是"com","org",也不是"java",需要添加"Packages."作为Nashorn调用的前缀java 库正确。
显然你需要把它放在你的class路径中...
我尝试将 Google 地图 Api 与 Nashorn 一起使用。但它似乎无法识别 api.
豆子
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader(FacesContext.getCurrentInstance().getExternalContext().getResource("/resources/js/MapGoogle/functions.js").getFile()));
Invocable invocable = (Invocable) engine;
Object result = invocable.invokeFunction("myFunction","param1");
functions.js
var myFunction = function(param1) {
var directionsService = new google.maps.DirectionsService();
return "";
};
错误:
javax.el.ELException: javax.script.ScriptException:
ReferenceError: "google" is not defined in <eval> at line number 9
如何添加此库以便 Nashorn 可以与 Google 地图 Api 一起工作?
我建议替换这一行:
var directionsService = new google.maps.DirectionsService();
使用以下行:
var directionsService = new Packages.google.maps.DirectionsService();
由于class包既不是"com","org",也不是"java",需要添加"Packages."作为Nashorn调用的前缀java 库正确。
显然你需要把它放在你的class路径中...