【发布时间】:2012-08-07 07:10:43
【问题描述】:
我正在用 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)。
在访问它们之前,我需要在这里做些什么来正确加载这些类吗?
【问题讨论】:
-
你是用
importPackage而不是importClass导入FileUtils,这是故意的吗? -
不,我最初尝试使用 importClass 时遇到错误,因此将其更改为 importPackage。我猜这与 ant 没有获取正确的 FileUtils 类有关。一旦 jar 文件 commons-io-1.4.jar 被包含在 ant.cmd 中,ant 给出了 importPackage 正在用于一个类的错误,最终不得不将其更改为 importClass。
标签: java javascript ant rhino