每个人遇到的情况可能不一样,这个问题困扰我一天多,最后才发现是用错了加载器,可能是同样的加载器调用的方法不一样作用也不一样吧。
直接获取系统类加载器
当使用系统类加载器加载配置文件时报空指针异常,当时没考虑到加载器问题,一味的修改路径,绝对路径和相对路径都试过后发现都不行。
/**
* 调用系统类加载器
*/
ClassLoad.getSystemClass().getResourceAsStream()

使用自定义类获取类加载器
我翻阅了各个论坛都没有找到合适的解决方案,最后看到一个文章讨论加载器的问题。就抱着死马当活马医的心态试了试,没想到却成功了。
/**
* CreateConn() 自定义类的静态方法,获取数据库连接
* 使用自定义类的加载器
*/
CreateConn().class.getClassLoad().getResourceAsStream()

我猜测,系统类加载器可以加载自定义类,但不能加载配置文件(没有实践,实践后再来修改),应该是内部无法读取不配置文件,自定义类加载时在本地已经有记录了,所以当调用该类加载器时会相对于当前自定义类的地址进行查找要加载的资源。
这种方法只是解决了我当前的问题,有好多疑问,还没找到资料证实,如果有提议望各位在评论区回复!!
本文探讨了如何在Java中正确使用系统类加载器与自定义类加载器加载配置文件,通过实例揭示了两者在资源查找上的区别。作者发现系统类加载器在处理配置文件时存在问题,而自定义类加载器由于本地记录的优势得以成功加载。
7068

被折叠的 条评论
为什么被折叠?



