Java 8 Javascript Engine 向后兼容性

2022-09-01 15:29:59

我正在我的项目中试用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: “importClass” 未在 at 行中定义

经过一些谷歌搜索,我发现它与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向后兼容。


答案 2

推荐