Question

Ok, j'ai donc créé un fichier JavaScript appelé test.js qui contient le code suivant:

print("It works!");

J'ai compilé à l'aide de la Rhino Compilateur JavaScript sans erreurs.Puis j'ai créé un nouveau fichier appelé foo.js qui contient ce code:

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

Maintenant quand je le lance foo.js dans Ringo en jette l'exception suivante et la trace de la pile:

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

Je ne sais pas où je vais mal.J'ai les dernières versions de Ringo et les Rhinocéros 1.7R3.J'ai ajouté le répertoire courant pour mon classpath en ajoutant la ligne suivante foo.js:

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

Cependant, il génère toujours la même erreur.Je n'ai aucune idée de comment faire ce travail.Toute aide sera grandement appréciée.

Était-ce utile?

La solution

OK, j'ai regardé la trace de la pile d'un peu plus près, et se rendit compte c'est de trouver le fichier de classe correctement, il essaie juste de le charger à partir de la mauvais package (home.aaditmshah.test au lieu de simplement test).Si le fichier de classe est dans votre chemin d'accès du module, vous pouvez le charger correctement avec juste le module (classe) leur nom.Par défaut, le répertoire courant n'est pas dans le chemin d'accès du module, de sorte que vous devez l'ajouter à la première:

require.paths.push('.')
var test = require("test.class");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top