2012-08-07 82 views
0

我正在寫一個內嵌的JavaScript在螞蟻。該腳本將掃描目錄並輸出相對於給定時間戳不最新的文件的名稱。無法導入類在螞蟻javascript

<script language="javascript"> <![CDATA[ 

    importPackage(Packages.java.lang); 
    importPackage(Packages.org.apache.commons.io.FileUtils); 
    importClass(Packages.java.io.File); 
    importClass(Packages.java.util.Iterator); 


    var path = "D:\DirectoryToScan\"; 
    var timeToCompare = buildServers.getProperty("buildStartTime"); 

    var invocationTime = new Date(timeToCompare); 
    invocationTime = invocationTime.getTime(); 

    var directoryToSearch = new File(path); 
    //CODE BREAKS HERE. NONE OF THE SUBSEQUENT LINES EXECUTE 
    var fileIterator = FileUtils.iterateFiles(directoryToSearch, new String[]{"pdf","html"} , true); 


    //iterate through files and directories in builtDocs folder and return false if any of the files is older than invocation time 
    while (fileIterator.hasNext()) { 
    var doc = fileIterator.next(); 
    if ((!FileUtils.isFileNewer(doc, invocationTime))) { 
     return false; 
    }   
    } 
]]> </script> 

我注意到第一次調用FileUtils時打破了。我也試過使用一些簡單的類,但它們不可訪問,看起來像import語句不適用於自定義類或屬於顯然無法訪問的包(例如apache.tools.ant.util.FileUtils)。

有沒有什麼,我需要做的是在訪問它們之前正確加載類?

+0

你用'importPackage'而不是'importClass'導入'FileUtils',是故意的嗎? – 2012-08-07 08:39:56

+0

Nopes,最初嘗試使用importClass時出現錯誤,因此將其更改爲importPackage。我想這與螞​​蟻沒有獲取正確的FileUtils類有關。一旦jar文件commons-io-1.4.jar被包含在ant.cmd中,ant就會報錯importPackage被一個類使用,並且最終必須將其更改爲importClass。 – 2012-08-08 07:03:22

回答

0

這個問題是通過在螞蟻的jar文件來解決。 cmd文件。

1

如果你想使用的類不在螞蟻自己的lib目錄,那麼你需要指定一個類路徑的腳本:

<path id="script.classpath"> 
    <fileset dir="lib" includes="**/*.jar"/> 
</path> 

<script language="javascript" classpathref="script.classpath"> 
    ... 
+0

我嘗試了您的解決方案,但它導致構建失敗並顯示錯誤消息: