【问题标题】:<eval>:32 ReferenceError: "document" is not defined javax.script.ScriptException<eval>:32 ReferenceError: "document" 未定义 javax.script.ScriptException
【发布时间】:2018-02-13 13:36:31
【问题描述】:

我需要使用空间错觉 javascript 库生成一个符号(画布或 SVG 格式),并在我的 java(专有框架)项目中使用该符号。 Java 脚本代码可用here。我正在使用下面的代码。

public class TestSymbolCreation {

    public static void main(String args[]) {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByExtension("js");

        System.out.println(new File(".").getAbsoluteFile());

        File file = new File("./src/resources/milsymbol.js");
        try {

            Reader reader = new FileReader(file);
            scriptEngine.eval(reader);
            Bindings obj = (Bindings) scriptEngine.eval("var canvasElement = {value : new ms.Symbol('SFG-UCI----D',{size:35}).asCanvas() };  canvasElement;");
            Object canvas = obj.get("value");
            System.out.println("Canvas =>"+canvas);

        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (ScriptException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

但我不断收到以下异常。如何让这个工作?有人可以帮帮我吗?

javax.script.ScriptException: ReferenceError: "document" is not defined in <eval> at line number 32
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:451)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:403)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:399)
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at TestSymbolCreation.main(TestSymbolCreation.java:30)
Caused by: <eval>:32 ReferenceError: "document" is not defined
    at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
    at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
    at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
    at jdk.nashorn.internal.objects.Global.__noSuchProperty__(Global.java:1432)
    at jdk.nashorn.internal.scripts.Script$Recompilation$149$403515A$\^eval\_.L:1-1$L:32-8$exports(<eval>:32)
    at jdk.nashorn.internal.scripts.Script$87$\^eval\_.:program(<eval>:1)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:640)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:446)
    ... 5 more

【问题讨论】:

  • ./src/resources/milsymbol.js 里面是什么?
  • @NathanP。它是来自spatialillusions.com 的 javascript 库文件
  • 对,但您必须提供相关代码,以便我们为您提供帮助。该文件可能引发了异常。
  • @NathanP。你想要java脚本文件吗?
  • @NathanP。我包含了那个 js 文件的要点。请看一下

标签: javascript java canvas svg


【解决方案1】:

这只是脚本执行器,因此它不会像浏览器提供的那样提供文档对象。 要使用文档对象,您需要集成可以与 Swing 组件集成的第三方浏览器,例如JTidy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 2017-12-23
    • 2012-08-24
    • 2015-10-04
    • 2017-04-10
    • 1970-01-01
    相关资源
    最近更新 更多