getResourceAsStream空指针

写项目时遇到代码调试时能找到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下获取

你可能感兴趣的:(getResourceAsStream空指针)