struts2 框架升级从2.3.*,升级到2.5.30

问题描述:

struts2 升级从2.3.*,升级到2.5.30 ,替换了structs相关jar,如果出现如下报错:

`ispatcher initialization failed Unable to load configuration. - bean - jar:file:/home/ds/556/dataservices/webapps/manager/WEB-INF/lib/struts2-core-2.5.30.jar!/struts-default.xml:152:154

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)

at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:970)

at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496)

at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)

at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:106)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4538)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)

at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1125)

at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1858)

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:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: Unable to load bean: type:com.opensymphony.xwork2.TextProviderFactory class:com.opensymphony.xwork2.StrutsTextProviderFactory - bean - jar:file:/home/ds/556/dataservices/webapps/manager/WEB-INF/lib/struts2-core-2.5.30.jar!/struts-default.xml:152:154

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:247)

at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:98)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:240)

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)

... 21 more

Caused by: java.lang.IncompatibleClassChangeError: Implementing class

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:763)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2394)

at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:855)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1327)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)

at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:144)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:218)

... 24 more`

是因为存在被遗弃的jar包中有类冲突导致的。

解决办法:

1.升级struts2需要替换的jar:

struts2-core-2.5.30.jar

struts2-json-plugin-2.5.30.jar

struts2-spring-plugin-2.5.30.jar

并删除对应的旧版本的jar

2.还需要额外处理的jar:

commons-lang3升级:

添加commons-lang3-3.8.1.jar并删除旧版本的jar

删除xwork-core-2.3.32.jar

(上述报错问题就是因为xwork中的jar和最新的struts2-core中的class有冲突,最新的structs2-core-2.5.22以上不需要再依赖次jar,需要删除)

3.可能还需要删除:

mydc.jar

log4j相关jar升级

4.处理web.xml文件中如下配置:

``

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  <init-param>
    <param-name>config</param-name>
    <param-value>struts-default.xml,struts-plugin.xml,../conf/struts.xml</param-value>
  </init-param>
</filter>

改为:

``

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  <init-param>
    <param-name>config</param-name>
    <param-value>struts-default.xml,struts-plugin.xml,../conf/struts.xml</param-value>
  </init-param>
</filter>

去除类路径中的.ng路径。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值