/ / Преминаване от Насхорн към Носорог - Ява, Град, Ява-8, Носорог, Насхорн

Преминаване от Nashorn към Rhino (Gradle) - java, gradle, java-8, rhino, nashorn

Използвам Java 8 с Kotlin и една от библиотеките в моя проект (http://michel-kraemer.github.io/citeproc-java/) отказва да работи на интерпретатора на Nashorn JavaScript, свързан с Java 8. Решението е вместо това да се използва интерпретатора на Rhino JavaScript.

Аз използвам Gradle за изграждането на моя проект. Вече добавих Rhino към моите зависимости, но библиотеката все още настоява да използва Nashorn.

compile "org.mozilla:rhino:1.7.7.1"

Освен това следващият код произвежда NullPointerException:

val m = ScriptEngineManager()
// specifically look for "rhino" engine
val engine = m.getEngineByName("rhino")

Така че изглежда, че Rhino не е на пътеката навсякъде. Как да се уверя, че Rhino е достъпна за моето заявление?

Отговори:

1 за отговор № 1

Rhino базиран jsr223 двигател вече не се доставя с jdk8 +. Но, можете да следвате стъпките, документирани тук, за да получите Rhino двигател на jdk8 + -> https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8

Това каза, ние бихме искали да знам защо nashorn не може да се използва! Моля, направете файл за грешка или изпратете доклад за проблема към nashorn-dev openjdk alias.


0 за отговор № 2

Заедно с двигателя Rhino ще ви е необходим мост JSR-233 (както вече не е в JDK). Можете да използвате следните maven зависимости:

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

Тогава просто се обадете на десния скрипт:

new ScriptEngineManager().getEngineByName("rhino");