Nashorn에 문제가있어서 기본 생성자 (Object, Array 등)의 작동 방식을 알 수 없습니다.여러 Nashorn ScriptEngine 사이에서 JavaScript 배열 및 객체 공유
내 문제는 응용 프로그램의 수명주기 동안 여러 ScriptEngines가 관련되어 있으며 그 중 일부는 기능을 만들 수 있습니다.
새로운 ScriptEngine에서 이러한 함수를 사용하려고하면 배열이이 인스턴스의 Array 생성자에 의해 생성되지 않았기 때문에 객체가 지정된 유형 (배열 instanceof Array)인지 확인할 수 없다는 문제가 있습니다. 이 글 https://wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223+engine+notes을 읽고 다음과 같이 그것을 해결하기 위해 노력
def "Just testing"() {
when:
def manager = new ScriptEngineManager()
def engine1 = manager.getEngineByName("nashorn")
def engine2 = manager.getEngineByName("nashorn")
def arrImpl = engine1.eval("[]")
engine2.context.setAttribute("arr", arrImpl, ScriptContext.ENGINE_SCOPE)
def val = engine2.eval("arr instanceof Array")
then:
val == true
}
,하지만 당신은 어떤 생각을 가지고 있습니까 여전히 운이
def "Just testing"() {
when:
def manager = new ScriptEngineManager()
def engine1 = manager.getEngineByName("nashorn")
def engine2 = manager.getEngineByName("nashorn")
def context = new SimpleScriptContext()
def bindings = engine1.getContext().getBindings(ScriptContext.ENGINE_SCOPE)
context.setBindings(bindings, ScriptContext.ENGINE_SCOPE)
def arrImpl = engine1.eval("[]")
context.setAttribute("arr", arrImpl, ScriptContext.ENGINE_SCOPE)
def val = engine2.eval("arr instanceof Array", context)
then:
val == true
}
가없는 : 여기
그것을 복제하는 테스트입니다 어떻게 작동 시키는가?