2011-01-06 92 views
1

我有一个包含符号链接的目录树。 (当前目录)。当我试图重复这种使用Ant文件集上,我得到以下错误:如何避免使用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();) {} 

回答

1

你在错误的地方设置'不遵循'。使用

files.setFollowSymlinks(false); 

,而不是

files.getDirectoryScanner().setFollowSymlinks(false); 

您发布将设置下面的代码扫描文件集的顶级目录,只有当“不跟随符号连接”。顶层目录中的符号链接仍将被遵循。

从您发布的内容中,不清楚您在causesIllegalSymlinkLoop()方法中引发IOException的原因(该异常正在第1859行捕获)。 但是,如果您设置的不是文件集而是其内部目录扫描程序,则该方法根本不会被调用。

+0

如果您在搜索不遵循符号链接的方式后来到这里,那么这不适合您。 setFollowSymlinks是完全误导,它完全忽略符号链接。我正在寻找的是一种不包含符号链接指向集合中的文件/目录集合的方法,但这并不适用。 – sabujp 2017-02-21 19:27:51