我有一个包含符号链接的目录树。 (当前目录)。当我尝试使用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(); ) {}
答案 0 :(得分:1)
您可以将followsymlinks
的{{1}}属性设置为FileSet
documented here.
答案 1 :(得分:1)
你在错误的地方设置'not-follow'。使用
files.setFollowSymlinks( false );
而不是
files.getDirectoryScanner().setFollowSymlinks( false );
只有在扫描文件集的顶级目录时,您发布的代码才会设置'not-follow symlinks'。仍将遵循顶级目录中的符号链接。
您已经准确地发布了什么导致在causesIllegalSymlinkLoop()
方法中引发IOException(该异常在第1859行被捕获),这一点尚不清楚。
但是如果您设置not-follow文件集而不是内部目录扫描程序,则根本不会调用该方法。