写项目时遇到代码调试时能找到Resources,打jar包后找不到的问题
在给隔壁科室开发一个小sdk,该sdk的resources目录下有几个文件,供sdk自己使用,将该sdk引入到一个Springboot项目后,调试时无异常,打包后发现文件找不到
sdk项目路径
--src
+-main
+-java
+-resources
+-db
--sqlite.db
用的时getResourceAsStream
方法来查找文件
其实问题很简单,该方法传参的路径,在不同的情况下表示的不同
在idea项目内调试时,调用getResourceAsStream
时是通过文件路径查找的,而打包jar
后,是通过url
来查找的
我在使用这个方法的时候,直接用的File.separator
来拼接的文件路径,在windows下表示为db\sqlite.db
,但是打包到jar
后,\
符号不是url的符号,需要用/
来代替,所以该直接使用/
拼接db/sqlite.db
真是丢人,辞职吧
记录一下三种getResourceAsStream
使用方式
Class.getResourceAsStream("")
从当前类的所在包下获取资源
Class.getResourceAsStream("/")
从classpath下获取资源,maven项目下,resources目录下的文件默认打包到classpath下
ClassLoader.getResourceAsStream()
不能以"/"开头,默认从classpath下获取
网友评论