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.

Другие вопросы по тегам