J'utilise Java 8 avec Kotlin et l’une des bibliothèques de mon projet (http://michel-kraemer.github.io/citeproc-java/) refuse de s'exécuter sur l'interpréteur JavaScript Nashorn fourni avec Java 8. La solution consiste à utiliser plutôt l'interpréteur JavaScript Rhino.
J'utilise Gradle pour construire mon projet. J'ai déjà ajouté Rhino à mes dépendances, mais la bibliothèque insiste toujours pour utiliser Nashorn.
compile "org.mozilla:rhino:1.7.7.1"
De plus, le code suivant génère une exception NullPointerException:
val m = ScriptEngineManager()
// specifically look for "rhino" engine
val engine = m.getEngineByName("rhino")
Il semble donc que Rhino ne figure nulle part dans le classpath. Comment puis-je m'assurer que Rhino est disponible pour mon application?
Réponses:
1 pour la réponse № 1Le moteur jsr223 basé sur Rhino n'est plus livré avec jdk8 +. Cependant, vous pouvez suivre les étapes décrites ici pour obtenir le moteur Rhino sur jdk8 + -> https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8
Ceci dit, nous "aimerions savoir pourquoi nashorn ne peut pas être utilisé! Veuillez enregistrer un bogue ou envoyer un rapport de problème à nashorn-dev openjdk alias.
0 pour la réponse № 2
Avec le moteur Rhino, vous aurez besoin du pont JSR-233 (car il n’est plus en JDK). Vous pouvez utiliser les dépendances Maven suivantes:
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>1.7.7.1</version>
</dependency>
<dependency>
<groupId>cat.inspiracio</groupId>
<artifactId>rhino-js-engine</artifactId>
<version>1.7.7.1</version>
</dependency>
Ensuite, il vous suffit d'appeler le bon moteur de script:
new ScriptEngineManager().getEngineByName("rhino");