Pregunta

Bien, entonces creé un archivo JavaScript llamado test.js que contiene el siguiente código:

print("It works!");

Lo compilé usando el compilador JavaScript de Rhino sin ningún error.Luego creé un nuevo archivo llamado foo.js que contiene este código:

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

Ahora cuando corro foo.js en Ringo arroja la siguiente excepción y seguimiento de pila:

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

No sé dónde me estoy equivocando.Tengo las últimas versiones de Ringo y Rhino 1.7R3.Agregué el directorio actual a mi classpath anteponiendo la siguiente línea a foo.js:

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

Sin embargo, todavía genera el mismo error.No tengo idea de cómo hacer que esto funcione.Cualquier ayuda será apreciada.

¿Fue útil?

Solución

Bien, miré el seguimiento de la pila un poco más de cerca y me di cuenta de que está encontrando el archivo de clase correctamente, simplemente intenta cargarlo desde el paquete incorrecto (home.aaditmshah.test en lugar de solo test).Si el archivo de clase está en la ruta de su módulo, puede cargarlo correctamente con solo el nombre del módulo (clase).De forma predeterminada, el directorio actual no está en la ruta del módulo, por lo que primero deberá agregarlo:

require.paths.push('.')
var test = require("test.class");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top