美文网首页
getResourceAsStream空指针

getResourceAsStream空指针

作者: 天探女 | 来源:发表于2020-08-20 22:49 被阅读0次

    写项目时遇到代码调试时能找到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空指针

          本文链接:https://www.haomeiwen.com/subject/iunmxktx.html