2010-08-22 4 views
7

Einige JavaScript-Dateien, die für die Rhino-Shell entwickelt wurden, laden mit load() zusätzliche JavaScript-Dateien. Ich versuche, Funktionalität von einer dieser Rhino-JavaScript-Dateien mit javax.script einzubetten. Leider ist die Funktion load() nicht durch JavaScript von javax.script implementiert. Bei dem Versuch, eval() ein Script mit load(), tritt der folgende Fehler:Rhino load() - Funktion in JavaScript zur Verfügung gestellt von javax.script?

com.sun.script.javascript.RhinoScriptEngine:-1:in `eval': javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "load" is not defined. 

eine für die Last javax.script liefern Does() Funktion, wenn eine JavaScript-Datei aus einem Java-Programm Auswertung (nicht aus höllisch)?

+2

Sie können Rhino möglicherweise einfacher einbetten, anstatt zu versuchen, die Version zu verwenden, die mit der JVM geliefert wird. – jbeard4

Antwort

1

Die Ladefunktion ist sehr alt. Im neuesten RC (RC3) von Rhino gibt es eine Loader-Implementierung commonJS module.

Sie müssen zu einer eingebetteten Version von Rhino wechseln. Nachdem Sie einen Skriptkontext erstellt haben, können Sie die Funktion require installieren. Wenn Sie eine Datei geladen haben, wird './math.js'var math = require('math');. Nachdem Sie Ihren Modulanbieter mit dem URI des Moduls erstellt haben.

Verwandte Themen