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

ここに記載されているように、followsymlinksのプロパティをFileSetに設定できます。false

于 2011-01-07T06:48:49.560 に答える
1

「フォローしない」を間違った場所に設定しています。使用する

files.setFollowSymlinks( false );

それ以外の

files.getDirectoryScanner().setFollowSymlinks( false );

投稿したコードは、ファイルセットの最上位ディレクトリのをスキャンする場合にのみ、「not-follow symlinks」を設定します。最上位ディレクトリのシンボリック リンクは引き続き追跡されます。

メソッドで IOException が発生する原因を正確に投稿したものからは明らかではありませんcausesIllegalSymlinkLoop()(その例外は 1859 行でキャッチされています)。ただし、内部ディレクトリ スキャナではなくファイルセットに not-follow を設定すると、メソッドはまったく呼び出されません。

于 2011-01-07T09:29:40.070 に答える