RingoJSにプリコンパイルされたJavaScriptモジュールはどのようにロードされていますか?
-
14-12-2019 - |
質問
大丈夫、私は次のコードを含むtest.js
というJavaScriptファイルを作成しました:
print("It works!");
.
私はエラーなしでRhino JavaScriptコンパイラを使ってコンパイルしました。次に、このコードを含むfoo.js
という新しいファイルを作成しました。
var test = require("./test.class");
.
Ringoでfoo.js
を実行すると、次の例外とスタックトレースをスローします。
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
.
どこに何が間違っているのかわかりません。私は最新バージョンのRingoとRhino 1.7R3を持っています。次の行をfoo.js
:
addToClasspath(module.resolve("."));
.
しかし、それでも同じエラーを生成します。この作品を作る方法はわかりません。あらゆる助けが大いに感謝されます。
解決
OK、私は少し近づいたスタックトレースを見て、クラスファイルを正しく見つけることを実現しました。クラスファイルがモジュールパスにある場合は、モジュール(クラス)名だけで正しくロードできます。デフォルトでは、現在のディレクトリはモジュールパスにはありませんので、最初に追加する必要があります。
require.paths.push('.')
var test = require("test.class");
. 所属していません StackOverflow