/ / Перехід від Nashorn до Rhino (Gradle) - java, gradle, java-8, носорог, носгорн

Перехід від Nashorn до Rhino (Gradle) - java, gradle, java-8, носорог, носгорн

Я використовую Java 8 з Kotlin і однією з бібліотек у моєму проекті (http://michel-kraemer.github.io/citeproc-java/) відмовляється працювати на інтерфейсі JavaScript Nashorn, який входить до складу Java 8. Рішенням є використання інтерпретатора JavaScript Rhino.

Я використовую 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 псевдонімом.


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