问题描述
由于在 struts 1.x 中发现了安全问题,我们正在将我们的一个旧应用迁移到 Struts 2.5.26。在测试时,我注意到当服务器启动时,tile 会抛出异常。
SEVERE: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.AbstractMethodError: org.apache.tiles.startup.AbstractTilesInitializer.createContainerFactory(Lorg/apache/tiles/TilesApplicationContext;)Lorg/apache/tiles/factory/AbstractTilesContainerFactory;
at org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:123)
at org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:70)
at org.apache.tiles.web.startup.AbstractTilesListener.contextInitialized(AbstractTilesListener.java:62)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Apr 21,2021 8:21:29 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
我们在 web.xml 中有以下内容
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles-defs.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
我们在 WEB-INF/lib 文件夹中有以下 jars
-rw-r--r-- 1 ryk6mkj 1049089 21175 Apr 20 15:21 tiles-el-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 161001 Apr 20 15:22 tiles-core-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 50740 Apr 20 15:22 tiles-jsp-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 59739 Apr 20 15:22 tiles-servlet-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 24466 Apr 20 15:22 tiles-template-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 35898 Apr 20 15:22 tiles-api-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 71270 Apr 20 15:36 tiles-request-api-1.0.0.jar
-rw-r--r-- 1 ryk6mkj 1049089 32629 Apr 20 15:54 tiles-portlet-2.2.2.jar
我看到 createContainerFactory() 方法在 AbstractTilesInitializer.java 类中是抽象的。不确定为什么不使用 StrutsTilesInitializer.java 或其他实现等实现?
任何线索为什么会发生这种情况?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)