遇上一个项目,友商给了一个 java 的功能 demo ,尝试了下用 erlang 语言还原,实在是能力不足,考虑到最后还是用 spring boot 将功能 copy 下载做成 web 服务器,用 http 请求的方法来使用功能。参考网上的文章将 spring boot 项目打包成 jar 包后,使用 dockerfile 将其打包成镜像。运行无异常,但是请求之后,出现了标题的 FileNotFoundException.
file:/opt/app/check.jar!/BOOT-INF/classes!/cn/net/check/resource/ca.pfx
能看到,路径上有 !这个奇怪的符号,仿佛是为了解压开文件进入,但是classes只是个目录而不是压缩包,所以出了问题。但是整个项目本身又是可以正常运行的,打包后启动也是成功的。最后搜索了网上的博客后,有一篇博客精准命中了我的问题,解决如下:
this.getClass().getResource("");
InputStream inputStream=this.getClass().getResourceAsStream("");
第一行代码是原先使用的读取项目中和某个类同级目录下的文件的方法,第二行代码则是改了后用输入流代替的方法,第二行的代码打包后可以让镜像正常使用。关于解释,我也了解不深,不解其意,附上原文链接给各位参考。
参考链接 : https://blog.csdn.net/kokjuis/article/details/80059184
网友评论