Как загрузить файлы .js в контекст Rhino в Java

Вот моя ситуация:

У меня есть доступ к объекту Rhino Context в классе Java. Я хочу прочитать кучу файлов .js и передать их в контекст Rhino для их оценки. Я не очень заинтересован в том, чтобы функции в файлах .js были доступны в контексте сценариев, а просто в наличии переменных, объявленных в файлах .js (это проблема проверки инструментов).

В идеале я бы прочитал и попытался оценить каждый файл сразу, а не построчно. Я заметил, что в Context есть метод (см. Rhino API) называется evaluateReader(). Мое первое предположение заключается в том, что я должен получить все файлы, которые я хочу загрузить, просмотреть их все и вызвать этот метод, передав какой-то объект чтения для каждого из них, и отлично, теперь они все в моем контексте сценария.

Итак, предполагая, что я на правильном пути, может ли кто-нибудь сказать мне, есть ли какие-либо передовые методы использования файлов .js в контекстах сценариев Java, или есть ли лучший способ сделать это, или вы сделали это по-другому и т.д.?

Не ищу здесь подробностей реализации, просто отзывы других людей, которые могли уже сделать это в каком-то своем коде. Возиться со скриптовыми языками из Java для меня в новинку.


person Troy Nichols    schedule 19.05.2009    source источник


Ответы (1)


Знаете ли вы, что Rhino поставляется с Java 6 ?

String javaScriptExpression = "sayHello(name);";
Reader javaScriptFile = new StringReader(
    "function sayHello(name) {\n"
        + "    println('Hello, '+name+'!');\n" + "}");

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory
    .getEngineByName("JavaScript");
ScriptContext context = engine.getContext();
context.setAttribute("name", "JavaScript",
    ScriptContext.ENGINE_SCOPE);

engine.eval(javaScriptFile);
engine.eval(javaScriptExpression);

Если вы хотите использовать его с Java 5, вам необходимо загрузить API отдельно. Вы можете получить механизмы для многих популярных языков сценариев на сайте scripting.dev.java.net.

person McDowell    schedule 19.05.2009
comment
Вы можете получить движки для многих популярных языков сценариев на сайте scripting.dev.java.net. Нет, мы больше не можем. Я знаю, что это очень старая ссылка, но есть ли более новая ссылка, которую мы должны использовать? - person nanofarad; 17.09.2013
comment
@hexafraction Попробуйте задать этот вопрос: stackoverflow.com/questions/11838369/ - person McDowell; 17.09.2013
comment
+1 Спасибо, это и веб-архив помогли , так как последний на самом деле просто набор ссылок. - person nanofarad; 17.09.2013