Java 8 Javascript引擎向后兼容性

时间:2014-03-19 10:37:29

标签: java ant java-8 nashorn

我正在我的项目中尝试使用Java 8,而且我遇到了与构建过程相关的错误。

我正在使用ANT脚本,并且在某些时候我使用一些javascript(嵌入到ANT中)来执行一些特定的操作。导致错误的脚本部分如下所示:

<script language="javascript"> 

        <![CDATA[

        importClass(java.io.File);
        importClass(java.io.FileReader);
                    ...
                    ]]>
</script>

该项目使用Java 7或Java 6构建正常,但在使用Java 8时会出现一些错误。这些错误与JS引擎的升级有关。

特别是我得到以下例外:

javax.script.ScriptException:ReferenceError:&#34; importClass&#34;未在第

行定义

经过一些谷歌搜索后,我发现它与JDK中的以下问题有关

[#JDK-8025132]

我尝试了评论中的建议,但没有运气。

如何使Java 8 Nashorn引擎与Rhino JS引擎兼容?

1 个答案:

答案 0 :(得分:45)

一种方法是包括

load("nashorn:mozilla_compat.js");

提供importClass。

另一方面,您可以直接使用java.io.File,java.io.FileReader,...而无需导入。

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

这与Rhino向后兼容。