Properties prop = new Properties();
File file = new File("config/config.properties");
异常如下图:
文件路径和名字都没错,而且在Myeclipse下能正常运行,可在IEDA中就是报错。
后来受StackOverFlow上的一篇文章 Getting FileNotFoundException even though file exists and is spelled correctly的启发,在项目中输出配置文件的绝对路径和当前路径:
File file=new File("config.properties");
System.out.println(file.getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
输出结果:
E:\program\ocpp-server\central-system-server\config.properties
E:\program\ocpp-server\central-system-server
仔细查看输出信息发现,路径定位的居然是Project路径,而不是实际所在的Module路径。这才使我想起来最开始学习使用时,IntelliJ IDEA官方一篇文章Migrating From Eclipse to IntelliJ IDEA中介绍过,IntelliJ IDEA中的Project,并不是真正的project,它其实跟eclipse中的workspace类似,在IntelliJ IDEA里面“new Project”就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程。
然后查看项目的启动配置,发现Working Directory中配置的路径果然指到的是Project上面了,因此出现配置文件加载不到配置文件的原因。
解决办法:
在IntelliJ IDEA中使用如上方式加载配置文件,是需要将启动配置中Working Directory选项的路径参数配置为$MODULE_WORKING_DIR$,示例设置如下图:
再次运行,问题解决