无法在ant javascript中导入类

时间:2012-08-07 07:10:43

标签: java javascript ant rhino

我正在用ant编写内联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)。

在访问类之前,我是否需要在此处正确加载类?

2 个答案:

答案 0 :(得分:1)

如果您尝试使用的类不在Ant自己的lib目录中,那么您需要为脚本指定类路径:

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

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

答案 1 :(得分:0)

通过将jar文件包含在ant.cmd文件中解决了该问题。