Weblogic8.1部署问题、Weblogic8.1部署报错、java.lang.NoSuchMethodError: javax.xml.namespace.QName.getPrefix()Ljava/lang/String;、找不到类、类冲突、类重用
1. 问题描述
Weblogic8.1部署WebReport工程时会报错,报错详细信息如下:
2. 报错原因
问题就是类重用导致的,%WL_HOME%\server\lib下的weblogic.jar内存在旧版本的javax.xml.namespace.
3. 解决方案
解决的主要思想就是修改加载顺序,使正确的jar包先于weblogic.jar加载。jar包可以使用D:\FineReport_6.5\lib\jetty\jaxrpc.jar。
3.1 方案一
简单的方案,看下安装目录\server\lib下有没有weblogic_sp.jar(这是weblogic给自己预留的补丁jar包,这个jar会 比weblogic.jar先加载)。假如没有,把jaxrpc.jar改名成weblogic_sp.jar,放到lib下就可以了。假如有,把 jaxrpc.jar内的内容复制进weblogic_sp.jar中。
这个方案存在一点麻烦,就是当你以后给weblogic打补丁,weblogic_sp.jar会被覆盖,就需要再做一次。
3.2 方案二
修改脚本文件。找到启动的脚本文件startWebLogic.sh(.bat/.cmd)。编辑它,找到如下类似内容:
set PRE_CLASSPATH=%ARDIR%\weblogic_knex_patch.jar;%WL_HOME%\common\lib\log4j.jar;%ARDIR%\debugging.jar;%ARDIR%\knex.jar;%JAVELIN_DIR%\javelin.jar;%ARDIR%\wlw-lang.jar。这个是先加载的classpath,在末尾添上jaxrpc.jar,例如加上:%WL_HOME%\server\lib\jaxrpc.jar,修改后如下:
set PRE_CLASSPATH=%ARDIR%\weblogic_knex_patch.jar;%WL_HOME%\common\lib\log4j.jar;%ARDIR%\debugging.jar;%ARDIR%\knex.jar;%JAVELIN_DIR%\javelin.jar;%ARDIR%\wlw-lang.jar;%WL_HOME% \server\lib\jaxrpc.jar(注意!不要轻易复制,以免您的配置文件内的内容同上面的不一样!)
再把jaxrpc.jar复制到安装目录\server\lib下面。执行以上方案之后重启weblogic服务器。
返回顶部