我应该预先知道这段代码是在IBM JDK 7中运行的。以下代码行会引发FileNotFound异常。
properties.load(new FileInputStream("/myApp/properties/props.properties"));
同样的代码行在我的同事计算机上运行良好。出于某种原因,在他们的机器上有一个隐含的C:
假定在该路径前面,这是我需要在我的计算机上发生的事情。我们已经集思广益,但还没有找到问题的解决方案。
当我运行此行时
properties.load(new FileInputStream("C:\\myApp\\properties\\props.properties"));
它工作正常,不会抛出错误。如您所见,我已将C:
专门放在路径中。如何让第一行代码假设存在隐式C:
?
答案 0 :(得分:0)
在Windows上,文件名/myApp/properties/props.properties
不是绝对的,因为它没有指定驱动器号。操作系统将添加当前工作目录的驱动器,使其成为绝对文件名。
因此,如果程序是使用驱动器C上的当前工作目录启动的,那么一切正常,如果从另一个驱动器启动,则无法找到该文件。