SpringBoot开发--java.io.FileNotFoundException与java.io.FileNotFoundException处理记录

SpringBoot打成jar包后,读取resources目录下的文件异常处理

本例引发错误的使用:
    String filePath = this.getClass().getClassLoader().getResource("certificate/kexin_client.p12").getPath();
    String client_file = filePath; 
    String client_passwd = passwd;
    
以上错误用法在mvn进行package,引发异常java.io.FileNotFoundException的出现:
  	异常:
          java.io.FileNotFoundException:
               file:\C:\Users\JK\Downloads\apiservers\target\apiservers-0.0.1-SNAPSHOT.jar! (文件名、目录名或卷标语法不正确。) 
               
	原因:
	      1、本地IDE测试过程中,文件是真实存在于磁盘的某个目录。此时获取的文件路径,是可以正常读取的,因为文件确实存在。
	      2、打包jar以后,实际上文件是存在于jar这个文件里面的资源文件,在磁盘没有真实路径的(\BOOT-INF\classes!\certificate\kexin_client.p12)
	      3、所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法无法正确获取文件。   

   	解决:
          1、指定要加载的资源路径与当前类所在包的路径一致,采用流的方式进行处理。
                InputStream inputStream = this.getClass().getResourceAsStream("path")

参考:
https://www.jianshu.com/p/8bb3c63d3fa2
https://blog.csdn.net/seapeak007/article/details/76572256
https://blog.csdn.net/ccmedu/article/details/78783248

你可能感兴趣的:(java)