В моем случае я решил проблему, установив SQL Server 2012 Developer Edition, когда я ранее установил SQL Server Express 2012 (x64). Кажется, это дало мне недостающую зависимость.
Похоже, подкласс должен предоставлять открытый метод, вызывающий walk ().
Просто чтобы расширить этот ответ, так как я сначала был озадачен тем, как использовать класс, и этот вопрос возник в Google, когда я смотрел по сторонам. Это просто пример того, как я его использовал (за исключением некоторых вещей):
public class FindConfigFilesDirectoryWalker extends DirectoryWalker {
private static String rootFolder = "/xml_files";
private Logger log = Logger.getLogger(getClass());
private static IOFileFilter filter = FileFilterUtils.andFileFilter(FileFilterUtils.fileFileFilter(),
FileFilterUtils.suffixFileFilter("xml"));
public FeedFileDirectoryWalker() {
super(filter, -1);
}
@SuppressWarnings("unchecked")
@Override
protected void handleFile(final File file, final int depth, final Collection results) throws IOException {
log.debug("Found file: " + file.getAbsolutePath());
results.add(file);
}
public List<File> getFiles() {
List<File> files = new ArrayList<File>();
URL url = getClass().getResource(rootFolder);
if (url == null) {
log.warn("Unable to find root folder of configuration files!");
return files;
}
File directory = new File(url.getFile());
try {
walk(directory, files);
}
catch (IOException e) {
log.error("Problem finding configuration files!", e);
}
return files;
}
}
А затем вы просто вызываете его через созданный вами общедоступный метод, передавая любые аргументы, которые вам могут понадобиться:
List<File> files = new FindConfigFilesDirectoryWalker().getFiles();