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");
Dans ce code, obj devient comme tableau d'objets. Je ne peux pas convertir en objet. Dans Java 1.7, l'utilisation de l'objet Rhino est en cours. J'ai essayé avecjava.lang.NoClassDefFoundError: jdk/nashorn/api/scripts/ScriptUtils en bundle OSGi
Object obj = (Object)ScriptUtils.convert(engine.get("formulaColumn"), Object.class);
Mais aucune erreur de calssDef montrant en Java 1.8
J'utilise OSGi. J'ai exporté jdk.nashorn.api.scripting.ScriptUtils. De mon jsfile je retourne un tableau.
Votre question est à peine lisible. NoClassDefFoundError signifie que vous n'avez pas la classe nécessaire dans votre chemin de classe, ajoutez le jar manquant à votre chemin de construction –
Pourriez-vous poster le stackTrace complet? Il semble peu probable que vous manquiez la classe ScriptUtils car elle est incluse dans le JDK. – Aaron
java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ScriptUtils Erreur lors de la visualisation. J'ai ajouté jdk/nashorn/api/scripting/ScriptUtils. Mais l'exécution ne peut pas être obtenue. – Diljish