Frage

Okay, also habe ich eine JavaScript-Datei namens erstellt test.js welches den folgenden Code enthält:

print("It works!");

Ich habe es mit dem Rhino JavaScript Compiler ohne Fehler kompiliert.Dann habe ich eine neue Datei mit dem Namen erstellt foo.js welches diesen Code enthält:

var test = require("./test.class");

Jetzt, wenn ich renne foo.js In Ringo wird die folgende Ausnahme und der folgende Stack-Trace ausgelöst:

Uncaught exception:
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.ringojs.tools.launcher.Main.run(Main.java:66)
    at org.ringojs.tools.launcher.Main.main(Main.java:45)
Caused by: java.lang.NoClassDefFoundError: /home/aaditmshah/test (wrong name: test)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at org.mozilla.javascript.DefiningClassLoader.defineClass(DefiningClassLoader.java:62)
    at org.ringojs.engine.ClassModuleLoader.load(ModuleLoader.java:126)
    at org.ringojs.engine.ReloadableScript.compileScript(ReloadableScript.java:153)
    at org.ringojs.engine.ReloadableScript.getScript(ReloadableScript.java:118)
    at org.ringojs.engine.ReloadableScript.exec(ReloadableScript.java:227)
    at org.ringojs.engine.ReloadableScript.load(ReloadableScript.java:215)
    at org.ringojs.engine.RingoWorker.loadModuleInternal(RingoWorker.java:283)
    at org.ringojs.engine.Require.call(Require.java:81)
    at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
    at org.mozilla.javascript.gen._home_aaditmshah_foo_js_3._c_script_0(/home/aaditmshah/foo.js:1)
    at org.mozilla.javascript.gen._home_aaditmshah_foo_js_3.call(/home/aaditmshah/foo.js)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
    at org.mozilla.javascript.gen._home_aaditmshah_foo_js_3.call(/home/aaditmshah/foo.js)
    at org.mozilla.javascript.gen._home_aaditmshah_foo_js_3.exec(/home/aaditmshah/foo.js)
    at org.ringojs.engine.ReloadableScript.evaluate(ReloadableScript.java:186)
    at org.ringojs.engine.RingoWorker.evaluateScript(RingoWorker.java:315)
    at org.ringojs.engine.RhinoEngine.runScript(RhinoEngine.java:186)
    at org.ringojs.tools.RingoRunner.run(RingoRunner.java:152)
    ... 6 more
enter code here

Ich weiß nicht, wo ich falsch liege.Ich habe die neuesten Versionen von Ringo und Rhino 1.7R3.Ich habe das aktuelle Verzeichnis zu meinem Klassenpfad hinzugefügt, indem ich die folgende Zeile vorangestellt habe foo.js:

addToClasspath(module.resolve("."));

Es wird jedoch immer noch der gleiche Fehler generiert.Ich habe keine Ahnung, wie das funktionieren soll.Jede Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung

OK, ich habe mir den Stack-Trace etwas genauer angesehen und festgestellt, dass er die Klassendatei korrekt findet und nur versucht, sie aus dem falschen Paket zu laden (home.aaditmshah.test statt nur test).Wenn sich die Klassendatei in Ihrem Modulpfad befindet, können Sie sie nur mit dem Modulnamen (Klassennamen) korrekt laden.Standardmäßig befindet sich das aktuelle Verzeichnis nicht im Modulpfad, daher müssen Sie es zuerst hinzufügen:

require.paths.push('.')
var test = require("test.class");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top