参数“directory”不是一个目录,而参数是一个目录

mos*_*awi 6 java io fileutils

我收到一个奇怪的错误,我提供给方法的参数抱怨它不是一个目录,但它实际上是一个包含文件的目录...我不明白出了什么问题...

顶层:

public static File mainSchemaFile = new File("src/test/resources/1040.xsd");
public static File contentDirectory = new File("src/test/resources/input");
public static File outputDirectory = new File("src/test/resources/output");


DecisionTableBuilder builder =constructor.newInstance(log, contentDirectory, outputDirectory);

// Here is where the error occurs
builder.compile(mainSchemaFile);
Run Code Online (Sandbox Code Playgroud)

我正在使用的类:

public class DecisionTableBuilder {

   public void compiler(File schemaFile) {
      ...
      // It's complaining about contentDirectory, it goes to FileUtils class for this
      Collection<File> flowchartFiles = FileUtils.listFiles(contentDirectory, mapExtension, true);
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

这是 apache FileUtils 类:

public class FileUtils {

    private static void validateListFilesParameters(File directory, IOFileFilter fileFilter) {
        if (!directory.isDirectory()) {
            throw new IllegalArgumentException("Parameter 'directory' is not a directory");
        }
        if (fileFilter == null) {
            throw new NullPointerException("Parameter 'fileFilter' is null");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:参数“directory”不是目录

这是我得到的错误输出...

任何人都知道这里发生了什么,我非常困惑......任何帮助将不胜感激。

编辑:

在我的顶层我添加了以下行:

if(contentDirectory.isDirectory()) {
    System.out.println("Content Directory: "+contentDirectory);
}

Output: src/test/resources/input
Run Code Online (Sandbox Code Playgroud)

小智 0

您指向的是文件而不是变量中的目录mainSchemaFile。减少包含该文件夹的路径1040.xsd- 它应该可以解决问题。