2015-04-27 6 views
0

У меня проблемы с доступом к классам 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); 
    } 
} 

ответ

1

Я понятия не имею, где ваш Java.type приходит от, но official documentation использует Packages.java или просто java.

Так что ваша линия должна вероятно выглядеть

var String = Packages.java.lang.String; 
+0

Видимо я перепутал в [синтаксисе Насхорн] (https://wiki.openjdk.java.net/display/Nashorn/Rhino+Migration+Guide). – mike

 Смежные вопросы

  • Нет связанных вопросов^_^