struts2 异常Unable to load bean 文件struts-default.xml
2017-12-20 23:28
357 查看
摘要: 项目中需要升级struts到struts2.5.14.1,这个版本有较大的改动,于是出现了较多的jar包冲突。很郁闷的是,很多问题在jetty服务器下,才会发生。
定位struts-default.xml文件到第29行,总之是错误发生的那一行。比如可能是下面这行:
结合错误中的
手动导入相关的jar包,比如在pom.xml中加入下面依赖:
还好定位struts-default.xml文件到错误发生的那一行第135行
结合错误中的
这就是说,有一个jar包的版本太低,不能满足struts的基本需求,需要升级相应jar包到最新版。
日志的处理
struts2.5.14.1的日志使用了log4j2的配置,如果项目中没有用到log4j,可能需要在引入struts的pom配置中exclude相关的日志处理包。并且在项目的合适位置引入log4j2.xml的配置文件。
关于jar包xwork-core
struts的低版本中用到了xwork-core,但是目前该包的最高版本是2.3.34,已经不能和struts版本保持一致,是因为struts放弃了对xwork-core的维护,而将struts中需要的xwork-core的内容全部移入到了struts-core中。所以,请不要在高版本的struts项目中引入以下依赖:<dependency> <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> <version>2.x.y</version> </dependency>
freemarker.jar的冲突
新版的struts中用到了新版本的freemarker可能会导致冲突,需要excludeasm.jar的冲突
新版的struts中用到了新版本的asm可能会导致冲突,需要excludeUnable to load bean
这个异常有好多个变种,它们的原因基本都是jar包冲突。Unable to load configuration. - bean - xxx/struts2-core-2.x.y.jar!/struts-default.xml:29:72
这个异常特别常见,出现这个异常,首先应该去确认项目中是否引入了两个版本不同的struts2-core-xxx.jar定位struts-default.xml文件到第29行,总之是错误发生的那一行。比如可能是下面这行:
<bean type="org.apache.struts2.components.template.TemplateEngine" name="jsp" class="org.apache.struts2.components.template.JspTemplateEngine" />
结合错误中的
Caused by:后面的内容,找到问题的发生原因,下面这个是
ClassNotFoundException,说明肯定缺少jar包
Caused by: java.lang.ClassNotFoundException: javax.servlet.jsp.JspWriter
手动导入相关的jar包,比如在pom.xml中加入下面依赖:
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency>
Unable to load bean: type:com.opensymphony.xwork2.XXX /struts2-core-2.0.11.2.jar!/struts-default.xml:135:154
首先应该去确认项目中是否引入了两个版本不同的struts2-core-xxx.jar还好定位struts-default.xml文件到错误发生的那一行第135行
结合错误中的
Caused by:后面的内容
Caused by : java.lang.IncompatibleClassChangeError: Implementing class
这就是说,有一个jar包的版本太低,不能满足struts的基本需求,需要升级相应jar包到最新版。
Unable to load bean:type:com.opensymphony.xwork2.TextProviderFactory
如果有上面这个问题,直接移除xwork-core的依赖就可以了。Caused by: Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory with the name spring has already been loaded by bean
如果有上面这个问题,一般是因为在struts整合spring的时候,struts的版本与struts2-spring-plugin-xxx.jar的版本不对应。相关文章推荐
- struts2默认配置文件 struts-default.xml
- struts2(4)------struts-default.xml默认配置文件分析
- struts2部署问题:找不到自定义struts-default.xml文件
- struts2的默认配置文件struts-default.xml
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- Struts2的默认配置文件:struts-default.xml
- struts2默认配置文件 struts-default.xml 研究
- struts2默认配置文件 struts-default.xml 研究
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- Struts2配置文件之struts-default.xml
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- struts2.x简析配置文件的时候报错!报:简析不了struts-default.xml,以及classcastException!
- (Struts2学习篇) Struts2配置文件之 struts-default.xml
- [转载]Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- struts2-core-2.1.6.jar!/struts-default.xml无法加载的问题
- struts2中的配置文件的<constant>标签(struts.xml自动加载)