代码之家  ›  专栏  ›  技术社区  ›  user6044627

Java语言lang.NoClassDefFoundError:osgi包中的jdk/nashorn/api/scripting/ScriptUtils

  •  2
  • user6044627  · 技术社区  · 7 年前
    ScriptEngineManager manager = new ScriptEngineManager(null);
    ScriptEngine engine = manager.getEngineByName("nashorn");
    BundleContext context = FrameworkUtil.getBundle(FormulaImpl.class).getBundleContext();
    URL configURL = context.getBundle().getEntry("eval.txt");
    if (configURL != null) {
        InputStream input = null;
        try {
            input = configURL.openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            StringBuilder out = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                out.append(line);
            }
            engine.eval(out.toString());
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        } finally {
            try {
                input.close();
            } catch (Exception e) {
                throw new RuntimeException(e.getMessage());
            }
        }
    }
    
    Object obj = engine.get("formulaColumn");
    

    在这段代码中,obj是作为对象数组获取的。 我无法转换为对象。 我试过了

    Object obj = (Object)ScriptUtils.convert(engine.get("formulaColumn"), Object.class);
    

    从我的jsfile返回一个数组。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Shemeem    7 年前

    我认为您不必使用ScriptUtils。如果您按照以下方式从java脚本返回数据,请在java代码中使用convert()方法:

    返回Java。to(数据,“java.lang.Object”)