最近私のJavaバージョンをJava 1.7からJava 1.8にアップグレードしました。アップグレード後、私はこのエラーが発生しています。ナショーン用のウィケット設定
原因:ECMAScript例外:タイプエラー:ScriptObjectおよびMy Interfaceの共通クラスローダーが見つかりません。
Java 1.8とnashornスクリプトエンジンをサポートする、使用する必要のあるウィジェットのバージョン。また、私はwicket用のScript Engineに関連するものを設定する必要があります。
私はこの依存
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-nashorn</artifactId>
<version>7.4.0</version>
</dependency>
とScriptEngineManager SEM =新しいScriptEngineManager()を追加しようとしています。 engine = sem.getEngineByName( "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;
}
}
あなたの答えマーティンありがとうございます。 – Bhagat
私はエラーを取得しているステートメントは - K ret =(K)((Invocable)エンジン).getInterface(thiz、myScript.getScriptInterfaceClass()); – Bhagat
原因:ECMAScript例外:TypeError:ScriptObjectおよびMy Interfaceの共通クラスローダーが見つかりません。 jdk.nashorn.internalで jdk.nashorn.internal.runtime.ECMAErrors.errorで\t(ECMAErrors.java:57) jdk.nashorn.internal.runtime.ECMAErrors.typeErrorで\t(ECMAErrors.java:213) \t .runtime.ECMAErrors.typeError(ECMAErrors.java:185) \t at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172) – Bhagat