参数 'directory' 不是参数的目录,而是目录

  • 本文关键字:参数 directory 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);

我正在使用的类:

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);
      ...
   }
}

这是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");
        }
    }
}

输出:参数'directory'不是目录

这是我得到的错误输出…

有人知道这里发生了什么吗?我超级困惑…任何帮助都将不胜感激。

编辑:

我在顶层添加了以下行:

if(contentDirectory.isDirectory()) {
    System.out.println("Content Directory: "+contentDirectory);
}
Output: src/test/resources/input

您指向的是文件而不是mainSchemaFile变量中的目录。

将路径缩小到包含1040.xsd的文件夹-它应该可以解决问题。

如果无法到达路径则抛出错误

显示的文件路径并没有告诉您要在哪里运行代码。如果您在您的工作空间中,但是您希望在服务器上运行它,并且路径意味着在服务器上,请参见以下内容:

我在调试自己项目的控制台输出的错误日志中看到,代码试图从我的工作空间获取数据。在编码时,我认为它会到达生产服务器上的文件,但它没有。

Exception in thread "my_project" java.lang.IllegalArgumentException: Parameter 'directory' is not a directory
        at org.apache.commons.io.FileUtils.validateListFilesParameters(FileUtils.java:545)
        at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:521)
        at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:691)

将需要的文件复制到我的工作空间并在代码中找到正确的路径后,错误就消失了,因为它找到了目录。

在我的程序中,我的工作目录是运行代码的存储库。我必须拉出服务器上的存储库,以便在服务器上的工作目录下运行它,以便它可以找到输入文件的生产目录。

相关内容

最新更新