Подтвердить что ты не робот

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?

4b9b3361

Ответ 1

Один из подходов состоит в том, чтобы включить

load("nashorn:mozilla_compat.js");

который поставляет importClass.

С другой стороны, вы можете напрямую использовать java.io.File, java.io.FileReader,... без импорта.

var File = java.io.File;
var FileReader = java.io.FileReader;

Это обратно совместимо с Rhino.