/ / Passage de Nashorn à Rhino (Gradle) - java, gradle, java-8, rhino, nashorn

Passage de Nashorn à Rhino (Gradle) - java, gradle, java-8, rhino, nashorn

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 № 1

Le 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");