可以在Eclipse中运行java但不能在cmd中运行java

时间:2012-06-28 17:03:49

标签: java input cmd

我的情况很简单。 我的程序中有这个:

File folder = new File("input");
File[] listOfFiles = folder.listFiles();
System.out.println(listOfFiles.length);

我只想将文件的所有路径从“input”文件夹放到一个数组中。 通过运行eclipse可以正常工作。当我尝试在cmd中执行此操作时,它会给我一个空指针异常。我的java文件在这个目录中:

  

C:\ Users \ JHeng \ Desktop \ java stuff \ converter \ src

感谢您的回复!

如果我把绝对目录放在第一行:

File folder = new File("C:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src\\input");

当我在eclipse中运行它时,eclipse甚至在行

中给我一个空指针异常
System.out.println(listOfFiles.length);

提前致谢!

2 个答案:

答案 0 :(得分:1)

问题是你的工作目录在两种情况下有所不同。

您在第一行创建的File对象使用相对路径 - 因此,如果从某些位置运行,它将找到相关文件夹,而在其他位置失败。特别是对listFiles()的调用将:

  

如果此抽象路径名不表示目录,或者发生I / O错误,则返回null

您是否可以指定绝对路径,以便程序的行为不依赖于它执行的目录? (这可能涉及对目录进行硬编码,或者将其作为配置变量或系统属性进行选择。)

如果您不想这样做,那么可能是您的程序应该根据其运行目录的不同而表现不同(例如,如果要对当前目录中的所有文件执行某些操作) )。如果是这样的话,那么你可以简单地对没有名为“输入”的子目录的情况进行更好的错误处理 - 例如检查folder.isDirectory()是否为真,如果没有输出相应的错误消息。

答案 1 :(得分:0)

这显然是工作空间的问题。现在尝试以下代码.......

但首先要确保在指定路径上有“src”文件夹...,它在File构造函数中作为参数传递。

File folder = new File("c:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src");
File[] listOfFiles = folder.listFiles();
System.out.println(listOfFiles.length);