【问题标题】:Envjs and Rhino in a Java application - Where to find env.rhino.js?Java 应用程序中的 Envjs 和 Rhino - 在哪里可以找到 env.rhino.js?
【发布时间】:2013-03-08 14:17:25
【问题描述】:

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

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

谁能帮帮我?

(是的,google 显示了一些结果,但它们不是正式属于 Rhino 或 envjs)

【问题讨论】:

标签: javascript rhino envjs


【解决方案1】:

我知道这个答案已经很晚了。但我也想做同样的事情并且遇到了同样的问题——也许这会对下一个问题有所帮助。花了一段时间才弄清楚 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>

j

【讨论】:

    【解决方案2】:

    首先,下载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)cx.evaluateString(scope, "alert('Its WORKING!')", "js", 1, null);
    

    【讨论】:

      【解决方案3】:

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

      一旦你让它工作起来,如果你试图用 SVG 生成请求大量加载 Node.js,就会出现更大的问题。

      【讨论】:

      • 感谢 Aejaz,我不再使用在服务器端创建 Javascript SVG。相反,我将静态链接返回到显示 SVG 的内部生成页面。尽管如此,如果您写一篇关于使用 Node.js 生成 SVG 的短文,您会为 3d.js 社区提供一个很大的帮助! :)
      猜你喜欢
      • 2013-04-05
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多