Java NoClassDefFoundError:osgi捆绑包中的jdk/nashorn/api/scripting/ScriptUtils
在这段代码中,obj是作为对象数组获取的。 我无法转换为对象。 在Java1.7中,使用Rhino对象是一个很好的选择。 我试过了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
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);