我最近將java版本從java 1.7升級到java 1.8。升級後,我得到這個錯誤。Nashorn - 無法爲ScriptObject和MyInterface找到常見的類加載器
引起:ECMAScript異常:類型錯誤:找不到ScriptObject和My Interface的通用類加載器。
請幫我解決這個問題。
下面是我的方法
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;
}
}
謝謝您的回答阿提拉。我按照您的建議做了並且得到了ClassNotFoundException java.lang.ClassNotFoundException:jdk.nashorn.internal.runtime.ScriptObject from [Module「deployment.dep.war:main」from Service Module Loader] – Bhagat