Weblogic8.1.1部署注意相关问题
前面有篇文章已经提到了部署到Weblogic8.1.6下面出现的相关问题及解决方法(weblogic需要注意的问题),这次项目需要部署到Weblogic8.1.1,问题就更多了,好在有上次的经历,这次总算比较顺利,没有大动干戈。将问题记录下来,如碰见相同问题,可做参考。
1 ClassNotFoundException: org.hibernate.hql.ast.HqlToken。此问题属于Weblogic8.1.1与hibernate3兼容上的问题。原因是: 在hibernate3中需要用到antlr.jar,然而这个包在weblogic.jar中已经包含了antrl类库(而且此jar包版本比较低),weblogic启动时默认加载了自己低版本的antrl.jar,导致hibernate无法正常使用。解决办法是下载一个高版本的antlr,我用的是antlr-2.7.5.jar(本人开始曾下载antlr-2.7.5.jar,后来发现无用,所以一定要注意版本号,没试3.X好不好用),替换到${WL_HOME}\server\lib下,
修改startWeblogic.cmd文件
@REM Set SERVER_NAME to the name of the server you wish to start up.
set SERVER_NAME=myserver
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr.jar;% WL_HOME%\server\lib\ant\ant.jar
set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%WL_HOME%\server\lib\webservices.jar;%CLASSPATH%
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
@REM Call WebLogic Server
在上面的代码中
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr.jar
和
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
为新增的,原文件并无此配置。
保存即可,问题解决。
2 java.lang.IllegalAccessError: tried to access field org.apache.tools.zip.ZipOutputStream.EOCD_SIG from class org.apache.tools.zip.ZipFile
原因:系统用到解压缩zip格式的压缩文件,我使用的是apache.tools里面的zip处理类,在tomcat下运行没有任何问题,在weblogic8.1.1下就不行了。会不会又是因为jar包太旧的原因呢?随后的查找告诉我我的直觉是对的,在${WL_HOME}\server\lib\ant目录下有一个同样的ant.jar( 版本太低),导致解压缩过程无法正常运行。找到了原因所在,就很好解决了。跟上面类似,我用我项目里的ant.jar替换到${WL_HOME}\server\lib\ant目录下,同样修改startWeblogic.cmd文件,(加上上面的修改)修改后的结果如下:
set SERVER_NAME=myserver
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr.jar;% WL_HOME%\server\lib\ant\ant.jar
set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%WL_HOME%\server\lib\webservices.jar;%CLASSPATH%
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
@REM Call WebLogic Server
总结一下:两个问题都是有用Weblogic8.1.1里面相应的jar包版本太低了导致功能无法正常使用,解决办法就是更新相应的jar包,修改启动命令,加载更新的jar包。

浙公网安备 33010602011771号