【发布时间】: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