У меня проблемы с доступом к классам Java в JavaScript. Вызов фрагмента кодаНе удается получить доступ к java.lang.String в скрипте, запущенном в Rhino
var String = Java.type("java.lang.String");
из Java с помощью javax.script.ScriptEngine
, дает follwing Error
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Java" is not defined. (path/to/string.js#1) in path/to/string.js at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:156)
at main.JsTest.main(JsTest.java:55)
Использование недопустимых Java классов в сценарии прекрасно работает, например, var value = a + b
, где a
и b
определены в javax.script.ScriptContext
.
Это класс Java, который выполняет сценарий.
JsTest.java
public class JsTest
{
public static void main(String[] args) throws Exception
{
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByExtension("js");
String script = "path/to/string.js";
File scriptFile = new File(script);
FileReader fr = new FileReader(scriptFile);
se.put(ScriptEngine.FILENAME, script);
ScriptContext sc = new SimpleScriptContext();
se.eval(fr, sc);
}
}
Видимо я перепутал в [синтаксисе Насхорн] (https://wiki.openjdk.java.net/display/Nashorn/Rhino+Migration+Guide). – mike