Envjs и Rhino в приложении Java - Где найти env.rhino.js?
Я пытаюсь запустить envjs и Rhino в Java-приложении для рендеринга SVG с D3.js.
Пока что я могу оценивать меньшие функции с помощью Rhino, но когда дело доходит до настройки envjs, начинаются проблемы. Наиболее важным является то, что единственный учебник для envjs говорит о файле с именем env.rhino.js. Но я понятия не имею, где его найти.
Кто-нибудь может мне помочь?
(Да, Google показывает некоторые результаты, но они официально не принадлежат Rhino или envjs)
3 ответа
Во-первых, скачать env.rhino.js
,
Затем используйте этот код Java для запуска экземпляра Rhino и загрузки Env.js:
import org.mozilla.javascript.Context;
import org.mozilla.javascript.tools.shell.Global;
import org.mozilla.javascript.tools.shell.Main;
Context cx = Context.enter();
Global scope = new Global(cx);
cx.setOptimizationLevel(-1);
cx.setLanguageVersion(Context.VERSION_1_5);
Теперь вы можете загрузить и запустить файл JavaScript (используя его абсолютный путь к файловой системе)
Main.processFile(cx, scope, ABSOLUTE_PATH_TO_SOME_JAVASCRIPT_FILE);
И / или оцените код JavaScript и получите результат String
(String)cx.evaluateString(scope, "alert('Its WORKING!')", "js", 1, null);
Я знаю, что этот ответ очень поздно. Но я хочу сделать то же самое, и у меня были те же проблемы - может быть, это поможет следующему. Потребовалось некоторое время, чтобы выяснить, какой из сотен вилок github на env-js сделает эту работу. Я обнаружил, что эта комбинация будет работать для простого теста:
git clone https://github.com/thatcher/envjs-site.git
#note the different fork!
wget https://raw.github.com/thatcher/env-js/master/src/dom/sizzle.js
wget http://d3js.org/d3.v3.min.js
java -jar dist/env-js-1.1.jar
load("lib/env.rhino.js");
load("sizzle.js");
load("d3.v3.min.js");
d3.select("body").append("svg").selectAll("line").data([1,2]).enter().append("line").attr("x1", function(d){return d;});
document.innerHTML;
<html><head/><body><line/><line/><svg xmlns="http://www.w3.org/2000/svg"><line x1="1"/><line x1="2"/></svg></body><line/><line/></html>
J
Я пытался это сделать, но не мог пойти очень далеко. Я также хотел генерировать SVG на стороне сервера с запросами, инициируемыми из Java(Glassfish в моем случае). Это можно сделать только с помощью jsdom & Node.js. Я могу сделать это успешно. К сожалению, кроме Node.js + jsdom, кажется, нет другого способа сделать это.
Как только вы заработаете, у вас будут большие проблемы, если вы попытаетесь сильно загрузить Node.js с запросами генерации SVG.