문제

koke, 다음 코드가 들어있는 test.js라는 JavaScript 파일을 만들었습니다.

print("It works!");
.

오류없이 Rhino JavaScript 컴파일러를 사용하여 컴파일했습니다.그런 다음이 코드가 들어있는 foo.js라는 새 파일을 만들었습니다.

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

이제 ringo에서 foo.js를 실행하면 다음 예외와 스택 추적을 throw합니다.

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의 최신 버전을 가지고 있습니다.다음 행을 Prependy Prependy

다음 행을 앞에 붙여서 ClassPath에 현재 디렉토리를 추가했습니다.
addToClasspath(module.resolve("."));
.

그러나 여전히 동일한 오류가 발생합니다.나는이 일을하는 방법을 모른다.어떤 도움이 크게 감사 할 것입니다.

도움이 되었습니까?

해결책

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

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top