Я використовую 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 для відповіді № 1Rhino, заснований на движку 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");