工程在本地windows機器上面安裝weblogic部署正常,遷移到linux(64位)下安裝32位的weblogic10.3出現異常
<Jan 15, 2013 5:13:23 PM CST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application 'ETeller'.weblogic.application.ModuleException: at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1510) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) Truncated. see log file for complete stacktraceCaused By: java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible(Ljava/lang/reflect/Constructor;)V at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:125) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:236) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) Truncated. see log file for complete stacktrace
網上尋找解決方案都說是 仔細檢查是由於有兩個包asm2.0.3.jar和asm.jar以及有spring-core.jar和spring-2.0.5core.jar,包衝突,刪除asm2.0.3.jar和spring-2.0.5core.jar後重新啟動正常 ,
但是仔細尋找了lib下的jar和weblogic公用module和service下面都沒有這兩個包,我們系統中並沒有使用,
然後去官網下載最新的32位12版本和64位版本的10.3weblogic,錯誤依舊,排除weblogic的問題,
然後通過啟動的時候打出的日誌發現錯誤找的包路徑為
[Loaded org.springframework.util.ReflectionUtils from file:/bea/app/products/WEB-INF/lib/spring-1.2.x.jar]
應該是spring-1.2.x.jar和spring-core-3.0.3.RELEASE.jar的衝突,應該是調用spring-core-3.0.3.RELEASE.jar中的ReflectionUtils類的makeAccessible方法,卻去了spring-1.2.x.jar中尋找
最後解決方案是替換掉系統中使用的這幾個包
WEB-INF/lib/spring-context-support-2.5.6.jarWEB-INF/lib/spring-1.2.x.jarWEB-INF/lib/spring-jms-3.0.3.RELEASE.jarWEB-INF/lib/spring-tx-3.0.3.RELEASE.jarWEB-INF/lib/spring-core-3.0.3.RELEASE.jarWEB-INF/lib/spring-context-3.0.3.RELEASE.jar
全部替換為
WEB-INF/lib/org.springframework.beans-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.jms-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.jdbc-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.aspects-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.test-3.0.3.RELEASE.jarWEB-INF/lib/javassist-3.12.0.GA.jarWEB-INF/lib/org.springframework.instrument.tomcat-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.web.servlet-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.oxm-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.web.portlet-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.web-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.asm-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.context-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.transaction-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.core-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.expression-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.web.struts-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.orm-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.context.support-3.0.3.RELEASE.jarWEB-INF/lib/hibernate3.jarWEB-INF/lib/org.springframework.instrument-3.0.3.RELEASE.jarWEB-INF/lib/org.springframework.aop-3.0.3.RELEASE.jar
最後啟動問題解決,但是還留下一個疑問,就是以前也是64位的Linux系統和weblogic,但是當時就沒有出現問題,可惜當時部署的同事早就閃人了,所以我一開始
覺得應該是weblogic公用部分有jar衝突,可惜找遍了weblogic也沒用找到有衝突的部分,最終只能走下策,替換jar,替換一堆jar啟動是沒有問題了,但是可能對應用有些影響