Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NoClassDefFoundError:osgi捆绑包中的jdk/nashorn/api/scripting/ScriptUtils_Java_Java 8_Osgi_Apache Karaf_Nashorn - Fatal编程技术网

Java NoClassDefFoundError:osgi捆绑包中的jdk/nashorn/api/scripting/ScriptUtils

Java NoClassDefFoundError:osgi捆绑包中的jdk/nashorn/api/scripting/ScriptUtils,java,java-8,osgi,apache-karaf,nashorn,Java,Java 8,Osgi,Apache Karaf,Nashorn,在这段代码中,obj是作为对象数组获取的。 我无法转换为对象。 在Java1.7中,使用Rhino对象是一个很好的选择。 我试过了 ScriptEngineManager manager = new ScriptEngineManager(null); ScriptEngine engine = manager.getEngineByName("nashorn"); BundleContext context = FrameworkUtil.getBundle(FormulaImpl.class

在这段代码中,obj是作为对象数组获取的。 我无法转换为对象。 在Java1.7中,使用Rhino对象是一个很好的选择。 我试过了

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");
但是Java1.8中没有显示calssDef错误

我正在使用osgi。我导出了jdk.nashorn.api.scripting.ScriptUtils。
从我的jsfile返回一个数组。

如果从java脚本返回数据,我认为您不必在java代码中使用ScriptUtils.convert()方法,如下所示:

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


我希望这会有所帮助。

你的问题几乎不可读。NoClassDefFoundError意味着您的类路径中没有必要的类,请将缺少的jar添加到BuildPath中您可以发布完整的stackTrace吗?似乎不太可能缺少ScriptUtils类,因为它包含在JDK.java.lang.NoClassDefFoundError中:显示JDK/nashorn/api/scripting/ScriptUtils错误。我添加了jdk/nashorn/api/scripting/ScriptUtils。但是运行时它不能得到。在使用Rhino的Java1.7中,我得到了正确的答案。objectobj=engine.get(“formulaColumn”);我在pom.xml中的Export标记中添加了jdk.nashorn.api.scripting.*也感谢您。我在js文件中添加了返回类型Java.to(data,“Java.lang.Object”),它正在工作。
Object obj = (Object)ScriptUtils.convert(engine.get("formulaColumn"), Object.class);