java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ScriptUtils in osgi bundle
java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ScriptUtils in osgi bundle
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 获取为对象数组。
我不能转换成对象。
在 java 1.7 中使用 Rhino 对象正在获取。
我试过
Object obj = (Object)ScriptUtils.convert(engine.get("formulaColumn"), Object.class);
但是 java 1.8
中没有显示 calssDef 错误
我正在使用 osgi。我导出了 jdk.nashorn.api.scripting.ScriptUtils 。
从我的 jsfile 我返回一个数组。
我认为您不必在 java 代码中使用 ScriptUtils.convert() 方法,如果您 return 从 java 脚本中获取数据如下:
returnJava.to(数据,"java.lang.Object")
希望对您有所帮助。
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 获取为对象数组。 我不能转换成对象。 在 java 1.7 中使用 Rhino 对象正在获取。 我试过
Object obj = (Object)ScriptUtils.convert(engine.get("formulaColumn"), Object.class);
但是 java 1.8
中没有显示 calssDef 错误我正在使用 osgi。我导出了 jdk.nashorn.api.scripting.ScriptUtils 。 从我的 jsfile 我返回一个数组。
我认为您不必在 java 代码中使用 ScriptUtils.convert() 方法,如果您 return 从 java 脚本中获取数据如下:
returnJava.to(数据,"java.lang.Object")
希望对您有所帮助。