Java Thread.currentThread().getContextClassLoader()的行为与Jetty 9.4.37.v20210219不同
从Jetty版本Java Thread.currentThread().getContextClassLoader()的行为与Jetty 9.4.37.v20210219不同,java,classloader,jetty-9,contextclassloader,Java,Classloader,Jetty 9,Contextclassloader,从Jetty版本9.4.37.v20210219在web应用程序中加载资源文件时遇到问题 我正在执行Thread.currentThread().getContextClassLoader()以获取classloader实例,然后尝试使用classloader.getResourceAsStream(“resourceFileName”)以流的形式获取资源。这行代码从jetty版本9.4.37.v20210219返回null 当通过在jetty版本9.4.37.v2020219和9.4.36.v
9.4.37.v20210219
在web应用程序中加载资源文件时遇到问题
我正在执行Thread.currentThread().getContextClassLoader()
以获取classloader实例,然后尝试使用classloader.getResourceAsStream(“resourceFileName”)
以流的形式获取资源。这行代码从jetty版本9.4.37.v20210219
返回null
当通过在jetty版本9.4.37.v2020219
和9.4.36.v220114
中记录classloader实例进行比较研究时,我看到了以下差异
在码头9.4.37.v20210219上,我得到
startJarLoader@1c4af82c
但是有了jetty 9.4.36.v20210114,我得到了
WebAppClassLoader{984235065}@3aaa3c39
startJarLoader是否指示jetty服务器类路径?从webapp加载资源文件的标准方式是什么
其他信息,我的web应用程序部署在JETTY_BASE/webapps
中,我的资源文件正试图加载到其中。此webapp有一个依赖项jar,部署在JETTY_BASE/lib/ext
中Thread.currentThread().getContextClassLoader()
用于webapp内部的一个方法,该方法从其依赖项jar调用。换句话说,被调用的线程属于webapp的依赖项jar,它位于服务器类路径/父类加载器中。这就是我猜想的原因,但我想知道为什么jetty9.4.37.v20210219
和更高版本会出现这种差异
顺便说一句,执行MyClass.class.getClassLoader()
返回WebAppClassLoader{984235065}@3aaa3c39
,我可以使用相同的classLoader.getResourceAsStream(“resourceFileName”)
获取资源流,但我想知道为什么在行为上与jetty版本9.4.37.v20210219
有所不同
谢谢你的帮助!提前谢谢