如何在RingoJS中加载预编译的JavaScript模块
How are precompiled JavaScript modules loaded in RingoJS?
好的,所以我创建了一个名为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("."));
然而,它仍然会产生相同的错误。我不知道该怎么做。任何帮助都将不胜感激。
好吧,我仔细查看了堆栈跟踪,意识到它正确地找到了类文件,它只是试图从错误的包(home.aaditmshah.test
而不仅仅是test
)加载它。如果类文件在模块路径中,则只需使用模块(类)名称即可正确加载。默认情况下,当前目录不在模块路径中,因此您必须首先添加它:
require.paths.push('.')
var test = require("test.class");
相关文章:
- 如何在Windows中将Javascript文件编译成二进制文件
- Javascript赢得'不能在IE上编译,但可以在Chrome上运行
- ScriptEngineManager能给我它刚刚用Java编译的Javascript函数的名称吗
- 在JavaScript中编译搜索后,获取链接到函数的属性标记的Element
- 无法使用 ant 和闭包编译器编译 javascript,因为 Jquery 的 $ 是未声明的
- 为什么每个人都使用 Node.js 和 NPM 来编译 JavaScript 库
- 使用KJSCompiler编译javascript后的JSCOMPILER_PRESERVE
- Rails没有预编译javascript
- 使用requirejs编译javascript程序以删除require依赖项
- 编写CoffeeScript时,编译Javascript中不必要的return关键字
- 预编译javascript中的验证器函数
- 用Rhino在Java内部编译JavaScript
- 使用Gulp编译javascript并解析依赖项(单独的文件)
- rails 3.1中的EJS gem无法正确编译JavaScript模板
- 如何创建makefile来编译javascript
- 资产管道只编译Javascript文件
- JScript条件编译+JavaScript压缩=预处理器
- PhantomJS不会使用类定义编译JavaScript脚本
- 如何为浏览器编译javascript库?
- 调试闭包编译器编译Javascript