2014-03-19 74 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