아마도 스크립트를 String으로로드했기 때문입니다. 대부분의 예는 다음과 같습니다 :이 스크립트는 어디에서 온 그것은 단지을 FileReader의 응답을 얻을 수 있기 때문에
engine.eval(new FileReader("scripts/hello.js"));
는 그런 엔진은 알 수 없습니다.
engine.eval("print('hello')")
을 호출하는 것과 같습니다. 파일은 없으며 문자열 만 있습니다.
jjs
을 사용하여 콘솔에서 스크립트를 호출하면 스크립트가 올바르게 채워집니다.
ScriptContext ctx = engine.getContext();
ctx.getBindings(ScriptContext.GLOBAL_SCOPE).put("thisFile", script);
engine.eval(new FileReader(script), defCtx);
JS :
print("I am " + thisFile);
을 맥락에서 문자열로 파일 경로를 저장하고 JS에서이 액세스 :
내가 현재는 더러운 하나를 참조 자바에서 이것을 실현하려 출력 :
I am resources/test.js
주 :하지만이 가능합니다, jdk.nashorn.tools.Shell
이 jdk.nashorn.internal.runtime.Context
을 설정할 수 있기 때문에이 배열이 전역 배열에 설정되어 있기 때문입니다.
출처
2015-03-05 09:36:39
sja
나를 위해 노력하십시오 ... 어떻게 Nashorn을 불러 모으고 있습니까? 'jjs'가 stdin에서 읽는다면'__DIR__'은 null입니다. –
Java에서 Nashorn을 사용하고 있습니다. 'CompiledScript' 객체를 평가 중입니다. –