struct2在tomcat运行报错--java.lang.NoSuchFieldException resourceEntries

Updated on in 程序人生 with 0 views and 0 comments

1、错误信息

image.png

2、问题跟踪及处理

可以看到,这个方法传递了一个Class对象和类加载器和一个字段给clearMap方法

image.png

进入clearMap方法,方法根据class对象获取属性,此时报出了属性找不到的错误

image.png

打开tomcat的源码查看这个被反射的类org.apache.catalina.loader.WebappClassLoader(tomcat源码地址

在这个类中发现,他继承了org.apache.catalina.loader.WebappClassLoaderBase,自己本身没有定义属性

image.png

进入WebappClassLoaderBase类中,可以找到resourceEntries字段

image.png

查看WebappClassLoaderBase的注释信息发现从7.0.64往后的版本,添加了WebappClassLoaderBase用来作为类加载器

image.png

此时有两个解决方案,一是对structs版本升级,但是这样的话,对应的其他依赖版本也要升级,代价太大,第二个方法较为简单,直接更换tomcat版本使其版本号<7.0.64即可,我换了7.0.63就正常了


标题:struct2在tomcat运行报错--java.lang.NoSuchFieldException resourceEntries
作者:wenyl
地址:http://www.wenyoulong.com/articles/2021/01/06/1609913582426.html