之前一直没有搞懂这个问题,直到最近开始学习JVM,学到类加载器这里,我好像理解了当时为什么错了。
首先,ClassLoader.getSystemClassLoader()拿到的是应用程序类加载器,也叫系统类加载器,然而在Tomcat容器中,当前类.class.getClassLoader() 拿到的是 WebappClassLoader 。
对于Tomcat容器中运行的java程序,使用系统类加载器是不能获取到资源的,必须使用WebappClassLoader来获取资源。
所以用 当前类.class.getClassLoader() 拿到当前类加载器,即可以成功获取资源