2012-03-15 4 views
3

좋아, 그래서 나는 다음과 같은 코드를 포함 test.js라는 자바 스크립트 파일을 만들었습니다. 내가 링고에 foo.js을 실행할 때 다음과 같은 예외 스택 추적 던져 지금미리 컴파일 된 JavaScript 모듈은 어떻게 RingoJS에로드됩니까? 내가 어떤 오류없이 코뿔소는 자바 스크립트 컴파일러를 사용하여 컴파일 된</p> <pre><code>print("It works!"); </code></pre> <p>:

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

:

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 

내가 모르겠어요 그럼이 코드를 포함 foo.js라는 새로운 파일을 생성 나는 잘못 가고있다. 최신 버전의 Ringo 및 Rhino 1.7R3을 사용하고 있습니다. 나는 foo.js에 다음 줄을 앞에 붙이는 내 클래스 경로에 현재 디렉토리를 추가 :

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

그러나, 여전히 같은 오류가 발생합니다. 나는이 일을 어떻게하는지 잘 모른다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

2

좋아요, 나는 스택 트레이스를 조금 더 가까이서보고 클래스 파일을 올바르게 찾는다는 것을 깨달았습니다. 그냥 잘못된 패키지 (test 대신 home.aaditmshah.test)에서로드하려고합니다. 클래스 파일이 모듈 경로에 있으면 모듈 (클래스) 이름만으로 올바르게로드 할 수 있습니다. 기본적으로 현재 디렉토리는 모듈 경로에없는, 그래서 당신은 먼저 추가해야합니다 :

require.paths.push('.') 
var test = require("test.class"); 
+0

가 실제로'.class' 확장이 필요한이 파일이 존재하는'ModuleLoader'를 알 수 있기 때문에 Rhino의'jsc' 도구로 컴파일 된 JavaScript가 필요합니다. '.class' 확장을 삭제하면 (자), 같은 이름의'.js' 파일을로드하려고합니다. 다음 커밋을 참조하십시오. https://github.com/ringo/ringojs/commit/20eee6739da7c69bf93c19d544abc2896df6b7a5 –

+0

@AaditMShah 오류 메시지를 더 자세히보고 내 대답을 업데이트했습니다. 수정 사항에 대한 알림을 받는지 여부는 알 수 없으므로 여기로 이동하십시오. –

+0

감사합니다. 그게 내 문제를 해결해 줬어. 제 실수를 이해하도록 시간을내어 주셔서 감사합니다. 정말 감사합니다. =) –