關鍵字:Spring weblogic server deploy 部署 配置 antlr cglib
Spring要求antlr 2.7.5 的支援,但更 在weblogic server8,9中weblogic.jar中整合的antlr的版本不夠高,所以在部署時會出錯。
解決辦法:到www.antlr.org下載antlr-2.7.5.jar包,並修改啟動weblogic啟動的環境變數,將這個包加在weblogic.jar包之前(注意一定要加在前面)。weblogic 8中修改:bea/weblogic81/common/bin/commEnv.cmd(.sh)這個檔案。weblogic 9中修改:bea/weblogic90/common/bin/commEnv.cmd(.sh)這個檔案,
修改後大體如下所示:
set WEBLOGIC_CLASSPATH=%PATCH_CLASSPATH%;%JAVA_HOME%/lib/tools.jar;%WL_HOME%/server/lib/antlr-2.7.5.jar;%WL_HOME%/server/lib/weblogic_sp.jar;%WL_HOME%/server/lib/weblogic.jar
就可以解決在weblogic server 上部署spring應用程式的問題了。
spring.jar這個包不用載入到wls的classpath中,與具體的應用程式綁定就可以了。
如果在載入中還碰到java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)這個問題出現,則必須將cglib-nodep-2.1_2.jar也加到classpath中weblogic.jar之前。
或者對於weblogic server 9在weblogic.xml中使用
<container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes></container-descriptor>
優先使用web-inf中使用的class而不是用先使用weblogic.jar包中的ClassVisitor這個類。(針對weblogic server 9)