关键字: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)