Java应用程序中的Envjs和Rhino - 在哪里可以找到env.rhino.js?

时间:2013-03-19 18:19:08

标签: javascript rhino envjs

我正在尝试在java应用程序中运行envjs和Rhino来使用D3.js渲染SVG。

到目前为止,我可以使用Rhino评估较小的函数,但是在设置envjs时,问题就开始了。最重要的一点是envjs的唯一教程是关于一个名为env.rhino.js的文件。但我不知道在哪里找到它。

有人可以帮帮我吗?

(是的,谷歌显示了一些结果,但它们并非正式属于Rhino或envjs)

3 个答案:

答案 0 :(得分:2)

我知道这个答案很晚。但我想做同样的事情并遇到同样的问题 - 也许这会有助于下一个问题。花了一段时间才弄清楚env-js上github分叉的哪一个将会完成这项任务。我发现这个组合适用于简单的测试:

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>

Ĵ

答案 1 :(得分:1)

首先,下载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);

答案 2 :(得分:0)

我确实尝试了这一点,但不能走得太远。我还想在服务器端生成SVG,请求是从java(在我的情况下是Glassfish)发起的。你能做到这一点的唯一方法就是使用jsdom&amp; Node.js的我能够成功地做到这一点。可悲的是,除了Node.js + jsdom之外,似乎没有其他方法可以做到这一点。

一旦你开始工作,如果你试图用SVG生成请求大量加载Node.js,那么潜伏着更大的问题。