web-dev-qa-db-fra.com

Comment utiliser Nashorn In Java 15 et plus tard?

J'ai une application de démarrage de printemps existante non modulaire et utilise Nashorn. L'application fonctionne bien sur Java 14.

Après avoir ajouté les coordonnées Maven de la nouvelle Nashorn disponible pour Java 15, l'application échoue lors du démarrage du moteur de script.

public static void main(String[] args) throws ScriptException {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("nashorn"); 
    engine.eval("print('Hello, World!');");
} 

Message d'erreur:

Exception in thread "main" Java.lang.NullPointerException: Cannot invoke "javax.script.ScriptEngine.eval(String)" because "engine" is null
    at xxxxx.yyyy.service.JavaScriptServiceImpl.main(JavaScriptServiceImpl.Java:52)

Est-il nécessaire de modulariser l'ensemble du projet pour utiliser Nashorn?

11
Aswath Murugan

Je viens de relâcher Nashorn 15.1 , ce qui permet à Nashorn de fonctionner lorsqu'il est chargé à travers la classe de classe au lieu de ModulEpath. Je l'ai testé avec une petite application de démarrage de printemps de la mienne et ça marche.

3
Attila Szegedi