我最近将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