首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nashorn的Wicket配置

nashorn的Wicket配置
EN

Stack Overflow用户
提问于 2016-11-23 01:18:40
回答 1查看 97关注 0票数 0

我最近把我的java版本从java 1.7升级到了java 1.8。在升级之后,我得到了这个错误。

原因: ECMAScript异常:类型错误:找不到ScriptObject和My Interface的通用类加载器。

我需要使用支持java 1.8和nashorn脚本引擎的哪个版本的wicket?另外,我是否需要配置任何与wicket脚本引擎相关的内容。

我已尝试添加此依赖项

代码语言:javascript
复制
<dependency>
            <groupId>org.wicketstuff</groupId>
            <artifactId>wicketstuff-nashorn</artifactId>
             <version>7.4.0</version>
        </dependency>

ScriptEngineManager sem = ScriptEngineManager();引擎= sem.getEngineByName("nashorn");

但我还是遇到了同样的问题。

请帮我解决这个问题。

下面是我的方法

代码语言:javascript
复制
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;
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2016-11-23 01:25:48

Wicket不需要Nashorn您可以在Java 8中使用Wicket 1.5/6.x/7.x/8.x。

运行Wicket应用程序绝对不需要wicketstuff-nashorn。

如果没有实际的错误,我们很难知道它失败的原因。

更新:为什么使用new ScriptEngineManager(null),即null ClassLoader。最好使用new ScriptEngineManager(),它将使用上下文类加载器,它很可能知道这两个类。或者使用new ScriptEngineManager(YourInterface.class.getClassLoader())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40747901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档