2016-11-22 6 views
0

최근 자바 1.7에서 자바 1.8으로 업그레이드했습니다. 업그레이드 후에이 오류가 발생합니다.나 쏜용 개찰 설정

에 의해 발생 : ECMAScript 예외 : 유형 오류 : ScriptObject 및 내 인터페이스에 대한 공통 클래스 로더를 찾을 수 없습니다.

Java 1.8 및 nashorn 스크립트 엔진을 지원하는 어떤 버전의 wicket을 사용해야합니까? 또한 wicket 용 스크립트 엔진과 관련된 사항을 설정해야합니다.

제가

이 종속성
<dependency> 
      <groupId>org.wicketstuff</groupId> 
      <artifactId>wicketstuff-nashorn</artifactId> 
      <version>7.4.0</version> 
     </dependency> 

및 ScriptEngineManager는 SEM = 새로운 ScriptEngineManager는()를 추가하는 시도; engine = sem.getEngineByName ("nashorn");

하지만 여전히 동일한 문제가 발생합니다.

이 문제를 해결할 수 있도록 도와주세요.

다음은 내 방법 Nashorn이 필요하지 않습니다

private final ScriptEngine engine; 
ScriptEngineManager sem = new ScriptEngineManager(); 
engine = sem.getEngineByName("nashorn"); 

public <K> K getNewInterface(MyScript myScript){ 
     ScriptContext ctx = new SimpleScriptContext(); 
     String script = myScript.getScript(); 
     if(Strings.isEmpty(script)) {markInvalid(myScript, "Script is empty", null); return null;} 
     script += " (function(){return this;})();"; 
     Object thiz; 
     try{ 
      thiz = engine.eval(script, ctx); 
     } catch (ScriptException e){ 
      markInvalid(myScript, "Can't execute script", e); 
      return null; 
     } 
     if(thiz==null) {markInvalid(myScript, "Script executed, but context is null", null); return null;} 
     K ret = (K) ((Invocable)engine).getInterface(thiz, myScript.getScriptInterfaceClass()); 
     if(ret==null) { 
      markInvalid(myScript, "Script executed, but it's incompatible with required interface", null); 
      return null; 
     }else{ 
      myScript.setValid(true); 
      return ret; 
     } 
    } 

답변

1

개찰구입니다. Java 8에서 Wicket 1.5/6.x/7.x/8.x를 사용할 수 있습니다.

wicketstuff-nashorn은 Wicket 응용 프로그램을 실행하는 데 꼭 필요한 것은 아닙니다.

실제 오류가 없으면 왜 실패하고 있는지 말할 수 없습니다.

업데이트 : 당신이 new ScriptEngineManager(null)를 사용 않는 이유, 즉 null 클래스 로더. 더 나은 사용 new ScriptEngineManager() 그리고 그것은 대부분 두 클래스에 대해 알고있는 컨텍스트 클래스 로더를 사용합니다. 또는 사용 new ScriptEngineManager(YourInterface.class.getClassLoader())

+0

답장을 보내 주셔서 감사합니다. – Bhagat

+0

오류가 발생하는 문장은 다음과 같습니다. - K ret = (K) ((호출 가능) 엔진) .getInterface (thiz, myScript.getScriptInterfaceClass()); – Bhagat

+0

에 의해 발생 : ECMAScript 예외 : TypeError : ScriptObject 및 My Interface에 대한 공통 클래스 로더를 찾을 수 없습니다. jdk.nashorn.internal.runtime.ECMAErrors.error에서 \t (ECMAErrors.java:57) jdk.nashorn.internal.runtime.ECMAErrors.typeError에서 \t (ECMAErrors.java:213) jdk.nashorn.internal에서 \t .runtime.ECMAErrors.typeError (ECMAErrors.java:185) \t at jdk.nashorn.internal.runtime.ECMAErrors.typeError (ECMAErrors.java:172) – Bhagat