0

我在从 Jetty 版本加载 Web 应用程序中的资源文件时遇到问题9.4.37.v20210219

我正在Thread.currentThread().getContextClassLoader()获取类加载器实例,然后尝试使用classLoader.getResourceAsStream("resourceFileName"). 这行代码从 jetty version 返回 null 9.4.37.v20210219

通过在码头版本中记录类加载器实例进行比较研究时9.4.37.v202102199.4.36.v20210114我看到以下差异

在码头 9.4.37.v20210219,我得到

startJarLoader@1c4af82c

但是使用码头 9.4.36.v20210114,我得到

WebAppClassLoader{984235065}@3aaa3c39

startJarLoader 是否指示码头服务器类路径?从 webapp 加载资源文件的标准方法是什么?

附加信息,我的 Web 应用程序已部署在其中,JETTY_BASE/webapps并且我有要在其中加载的资源文件。这个 webapp 有一个依赖 jar,它部署在JETTY_BASE/lib/ext. Thread.currentThread().getContextClassLoader()在 webapp 内部的方法中使用,该方法从其依赖项 jar 中调用。换句话说,被调用的线程属于 webapp 的依赖 jar,它位于服务器类路径/父类加载器中。这就是我猜的原因,但我想知道为什么从码头9.4.37.v20210219和更高版本中可以看到这种差异。

顺便说一句,做MyClass.class.getClassLoader()退货WebAppClassLoader{984235065}@3aaa3c39,我可以使用相同的方式将资源作为流获取,classLoader.getResourceAsStream("resourceFileName")但我想知道为什么行为与 jetty version 有所不同9.4.37.v20210219

感谢任何帮助!提前致谢!

4

0 回答 0