一、现象
用SpringBoot做的一个小项目。
放在linux读取resource下资源时显示:
file:/xxx.jar!/BOOT-INF/classes!/xxx.xxx (No such file or directory)
二、原因
打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件,在磁盘是没有真实路径的。
所以通过其他获取磁盘路径的方式是无法获取到该文件的。
三、解决
用流的方式读取文件即可:this.getClass().getResourceAsStream("")
这个路径对应jar的classes路径。
示例代码
String path = "server.jks" ;
InputStream jksInputStream = this.getClass().getClassLoader().getResourceAsStream(path);
这个server.jks文件就在resource目录下。