2011-01-06 89 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