1

我有一个目录树,其中包含指向 . (当前目录)。当我尝试使用 Ant FileSet 对其进行迭代时,我收到以下错误:

Caught error while checking for symbolic links
 at org.apache.tools.ant.DirectoryScanner.causesIllegalSymlinkLoop(DirectoryScanner.java:1859)

我用来生成扫描仪的代码是:

FileSet files = new FileSet();
Project project = new Project();
project.setBasedir( dir );
files.setProject( project );
files.setDir( project.getBaseDir() );

files.getDirectoryScanner().setFollowSymlinks( false );

for( Iterator iter = files.iterator(); iter.hasNext(); ) {}
4

2 回答 2

1

您将“不关注”设置在错误的位置。利用

files.setFollowSymlinks( false );

代替

files.getDirectoryScanner().setFollowSymlinks( false );

您发布的代码仅在扫描文件集的顶级目录下方时才会设置“不遵循符号链接” 。仍将遵循顶级目录中的符号链接。

从您发布的确切内容中不清楚是什么导致causesIllegalSymlinkLoop()方法中引发 IOException(该异常在第 1859 行被捕获)。但是,如果您在文件集而不是其内部目录扫描器上设置了 not-follow,则根本不会调用该方法。

于 2011-01-07T09:29:40.070 回答
1

您可以设置to的followsymlinks属性,如此处所述。FileSetfalse

于 2011-01-07T06:48:49.560 回答