Lösen von Modulen mit require.js und Java / Rhino

Ich versuche, require.js dazu zu bringen, Module auf der Serverseite mit Java 6 und Rhino zu laden.

Ich bin in der Lage, require.js selbst ganz gut zu laden. Rhino kann das sehenrequire() Funktion. Ich kann sagen, weil Rhino sich beschwert, dass es die Funktion nicht findet, wenn ich ändererequire() zu etwas anderem wierequireffdkj().

Aber wenn ich versuche, auch nur ein einfaches JS zu fordern, wiehello.js

var hello = 'hello';

Verwenden Sie eine der folgenden Methoden:

require('hello');
require('./hello');

es funktioniert nicht Ich bekomme

Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.JavaScriptException: [object Error] (<Unknown source>#31) in <Unknown source> at line number 31
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153)
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)

Ich habe meinhello.js ganz oben auf dem Java-Klassenpfad. Dort habe ichrequire.js auch. Ich versuchte mich zu bewegenhello.js Überall, wo ich denken könnte, dass es möglicherweise geht, einschließlich des Stammverzeichnisses meiner Festplatte, des Stammverzeichnisses meines Benutzerverzeichnisses, des Verzeichnisses, von dem aus ich meine Java-App ausführe usw. Nichts funktioniert.

Ich habe mir die CommonJS-Spezifikation angeschaut (http://wiki.commonjs.org/wiki/Modules/1.0) und es heißt, dass IDs der obersten Ebene (wiehello) werden aus der "Wurzel des konzeptuellen Modulnamensraums" aufgelöst, während relative IDs (wie./hello) werden gegen das aufrufende Modul aufgelöst. Ich bin mir nicht sicher, wo sich eine dieser Baselines befindet, und ich vermute, dass dies das Problem ist.

Irgendwelche Vorschläge? Kann ich auch require.js von Rhino verwenden?

BEARBEITEN: Da ich dachte, dass ich die Umgebung gemäß Pointys Vorschlag im folgenden Kommentar einrichten muss, versuchte ich zu evaluierenr.js auch. (Ich habe versucht, nach der Bewertung zu bewertenrequire.jsund dann nochmal vorrequire.jsIn beiden Fällen erhalte ich eine Fehlermeldung:

Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "arguments" is not defined. (<Unknown source>#19) in <Unknown source> at line number 19
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153)
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)

"Argumente" scheint eine Variable in zu seinr.js. Ich denke, es ist für Befehlszeilenargumente, also denke ich nichtr.js ist der richtige Weg für das, was ich versuche zu tun. Bin mir aber nicht sicher.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage