2017-09-05 33 views
0

我需要使用Spatial illusions javascript庫生成符號(以canvas或SVG格式),並在我的java(專有框架)項目中使用該符號。 java腳本代碼可用here。我正在使用下面的代碼。<eval>:32 ReferenceError:「document」未定義javax.script.ScriptException

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 
+0

'./src/resources/milsymbol.js'裏面是什麼? –

+0

@NathanP。它是一個來自https://spatialillusions.com/ – User

+0

的javascript庫文件。但是,您必須提供相關代碼,以便我們可以爲您提供幫助。該文件可能引發異常。 –

回答

0

這是腳本執行程序,所以它不會提供瀏覽器提供的文檔對象。 要使用文檔對象,您需要集成可與swing組件集成的第三方瀏覽器,例如JTidy