weblogic部署war冲突解决记录
- 问题描述:应用在tomcat上运行没有问题,在weblogic报错。
原因1
观察日志的最后一行,不要自动换行,异常一般会嵌套很多层,看到最后一层应该就是问题的源头,这次找到的问题原因是org.joda.time.DateTime 包冲突了,解决办法是
在weblogic.xml 中加入
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
<prefer-application-packages>
<package-name>antlr.*</package-name>
......
<package-name>org.slf4j.*</package-name>
</prefer-application-packages>
</container-descriptor>
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.xxx.xxx.jobscheduler.service.impl.JobSchedulerServiceImpl]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.joda.time.DateTime.<init>(IIIII)V
原因2 缺少jstl 和standard,在tomcat不用引入这两个也能正常启动。这两个错误的表现是
java.lang.ClassNotFoundException: org.apache.taglibs.standard.tag.rt.sql.SetDataSourceTag
weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.apache.taglibs.standard.tag.rt.sql.SetDataSourceTag
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>