关于Weblogic异常:weblogic.servlet.jsp.compilationException解决方案

Posted Smile_Miracle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Weblogic异常:weblogic.servlet.jsp.compilationException解决方案相关的知识,希望对你有一定的参考价值。

网上对于这个异常的说法很多,先贴上具体异常,如下:

weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB-INF/jsp/frame/perspective_content.jsp  
perspective_content.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlCoreTLV" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory".  
<%@ page contentType="text/html; charset=utf-8"%>  

出这个异常的是由于weblogic有自己的一套J2EE的Jar包,如果你项目里面在出现拥有同名的Jar包的话基本话都会出现这个问题。如下是网友的和我一样问题的情况:

问题分析:经过一步步的定位排查,确定问题是jstl标签解析错误导致(页面包含:<%@ taglib prefix=”c” uri=”/tags/c.tld”%>, 去掉后页面就能正常打开)。
多次测试后发现,当weblogic.xml中的true 参数改为“false”时,jstl中的c标签能解析正常,但是工程又
无法正常启动,于是进入一个矛盾地:
参数为true,工程启动正常,但是配置了<%@ taglib prefix=”c” uri=”/tags/c.tld”%>的页面无法打开;
参数为true,配置了<%@ taglib prefix=”c” uri=”/tags/c.tld”%>的页面能打开,但是工程无法启动(通过测试小程序发现,
因为工程无法启动,该工程下的页面是无法访问的)
这个问题就像一个无解的结困扰着我。

晚上给出的解决方法主要分为两大类:

**第一种**
在部署的项目的web.xml同名目录下添加weblogic.xml文件,主要是设置一个属性:prefer-web-inf-classes,设置为true,这样做的目的是为了让服务器在加载jar包的时候获取找方法的时候优先以项目下WEB-INF/LIB中的Jar为主,但是与我们的问题没暖用;

**第二种**
1.将工程/WEB-INF/lib/下的 antlr-2.7.6.jar  复制到weblogic下  /home/Oracle/Middleware/wlserver_10.3/server/lib  路径下;
2.修改weblogic的启动配置文件startWeblogic.sh(/home/Oracle/Middleware/user_projects/domains/base_domain/bin)
在CLASSPATH="$SAVE_CLASSPATH" 下面加入以下内容:
PRE_CLASSPATH="$WL_HOME/server/lib/antlr-2.7.6.jar:"

CLASSPATH="$PRE_CLASSPATH$SAVE_CLASSPATH"

还是,没暖用。

我的解决方法如下:

在web.xml的同级目录下添加weblogic.xml,配置如下:

<weblogic-web-app>
  <container-descriptor>
      <prefer-application-packages>  
          <package-name>org.apache,commons.lang.*</package-name>
          <package-name>antlr.*</package-name>
          <package-name>javax.persistence.*</package-name>
          <package-name>org.apache.cxf.*</package-name>
      </prefer-application-packages> 
  </container-descriptor>
</weblogic-web-app>

这么做的主要原因是对于我们项目用到的一些和weblogic有冲突的jar包让他以我们项目为主。

以上是关于关于Weblogic异常:weblogic.servlet.jsp.compilationException解决方案的主要内容,如果未能解决你的问题,请参考以下文章

weblogicwar包,捕获的异常在哪看

weblogic 应用运行异常

Weblogic jsp页面编译出错,Weblogic jsp编译异常

weblogic部署项目报空指针异常,急!急!急!急!

weblogic 9i 启动部署有struts 2的应用,日志异常

weblogic配置数据源-在处理请求时出现意外的异常错误