解决 java.io.FileNotFoundException: file:/usr/project/xxx.jar!/BOOT-INF/classes!/conf/config.js

使用spingboot开发,在工程根目录中添加了一个配置文件,在IDE中通过this.getClass().getResource("")来获取文件的路径,没有任何的问题。

在打成jar后运行,结果不能读取到文件。在jar里面对应的class路径下可以看到该文件,确定是有打包进去的。

此时通过 this.getClass().getResource("");方法无法正确获取文件。

用 InputStream inputStream=this.getClass().getResourceAsStream(""); 可以正确读取。

原因是什么呢?估计在调试过程中(没有打包成Jar),文件是真实存在于磁盘的某个目录。此时通过获取文件路径,是可以正常读取的,因为文件确实存在。

而打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件。在磁盘是没有真实路径的。所以通过 this.getClass().getResource("");方法无法正确获取文件。

而InputStream inputStream=this.getClass().getResourceAsStream("");会指定要加载的资源路径与当前类所在包的路径一致。

因此能正常读取文件。

猜你喜欢

转载自blog.csdn.net/kokjuis/article/details/80059184