Java 参数';目录';不是作为目录的参数的目录
我得到了一个奇怪的错误,我提供给一个方法的参数抱怨它不是一个目录,但实际上它是一个包含文件的目录…我不明白怎么了 顶级:Java 参数';目录';不是作为目录的参数的目录,java,oop,io,fileutils,Java,Oop,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 =
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);
...
}
}
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");
}
}
}
我正在使用的类:
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);
...
}
}
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");
}
}
}
输出:参数“目录”不是目录
这是我得到的错误输出
任何人都知道这里发生了什么我非常困惑…任何帮助都将不胜感激
编辑:
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);
...
}
}
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");
}
}
}
在我的顶层中,我添加了以下行:
if(contentDirectory.isDirectory()) {
System.out.println("Content Directory: "+contentDirectory);
}
Output: src/test/resources/input
您指向的是文件,而不是
mainSchemaFile
变量中的目录。减少包含1040.xsd
的文件夹的路径-它应该可以解决问题。从File.isDirectory()
javadoc中,如果且仅当此抽象路径名表示的文件存在并且是一个目录,则为true;否则为false
。因为您使用的是相对路径,所以它可能解析为不存在的位置。可以打印路径并查看它是否存在吗?在FileUtils.validateListFileParameters
中添加这一行“System.out.println(directory.getCanonicalPath());”在之前,如果(!directory.isDirectory())
并查看它指向何处。@srkavin是的,我在上面的“编辑”下编辑了我的问题,它会打印出相对路径,但我不明白这怎么会是个问题。@Shahzeb我使用FileUtils作为maven依赖项,我将无法将代码添加到它中,在那里放置一个调试点,当它停在那里时,在eclipse中观看。它失败的唯一原因是在这一点上不是一个目录。