将外部库与 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路径中...