Java 8 Javascript Engine назад совместимость
Я пробовал Java 8 в своем проекте, и я застрял в ошибке, связанной с моим процессом сборки.
Я использую скрипты ANT, и в какой-то момент я использую некоторый javascript (встроенный в ANT) для выполнения определенных операций сборки. Часть script, вызывающая ошибку, выглядит следующим образом:
<script language="javascript">
<![CDATA[
importClass(java.io.File);
importClass(java.io.FileReader);
...
]]>
</script>
Проект строится отлично с Java 7 или Java 6, но он дает мне некоторые ошибки, когда я использую Java 8. Эти ошибки связаны с обновлением движка JS.
В частности, я получаю следующее исключение:
javax.script.ScriptException: ReferenceError: "importClass" не определен в строке
После некоторого googling я узнал, что это связано с проблемой ниже в JDK
[# JDK-8025132]
Я пробовал то, что предлагается в комментариях, но без везения.
Как я могу заставить Java 8 Nashorn работать с движком Rhino JS?
Ответы
Ответ 1
Один из подходов состоит в том, чтобы включить
load("nashorn:mozilla_compat.js");
который поставляет importClass.
С другой стороны, вы можете напрямую использовать java.io.File, java.io.FileReader,... без импорта.
var File = java.io.File;
var FileReader = java.io.FileReader;
Это обратно совместимо с Rhino.