2014-03-19 108 views
22

我正在尝试Java 8在我的项目中,我被困在与我的构建过程相关的错误。Java 8 JavaScript引擎向下兼容性

我正在使用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”是不是在行

定义了一些谷歌上搜索,我发现,这是关系到以后下面在JDK

[#JDK-8025132]

问题,我试了一下,建议在评论,但没有运气。

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

+0

相关http://stackoverflow.com/questions/22502630/switching-from-rhino-to-nashorn – Philipp

回答

39

一种方法是包括

load("nashorn:mozilla_compat.js"); 

供给importClass。

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

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

这是向后兼容犀牛。

+3

根据这篇文章:(https://bugs.openjdk.java.net/browse/JDK-8025132 ?focusedCommentId = 13569345&page = com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13569345) 您可以将加载语句放入Try Catch块。这对我来说诀窍 尝试加载(“nashorn:mozilla_compat.js”); (e){ //忽略异常 - 也许我们正在Rhino上运行! } – Steven