本文转载于CSDN:http://blog.csdn.net/honganboy/article/details/7161122
1.org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundExcepti on: org.hibernate.hql.ast.HqlToken
错误原因: 在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。 出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。
解决步骤:
步骤1:在WEB-INF目录下建一个weblogic.xml文件,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <weblogic-web-app>
- <container-descriptor>
- <prefer-web-inf-classes>true</prefer-web-inf-classes>
- </container-descriptor>
- </weblogic-web-app>
步骤2: 将antlr-2.7.6.jar拷贝到wlserver_10.3/server/lib目录下
步骤3:修改weblogic的启动文件
Windows系统
1.) 修改weblogic domain/bin下的startWebLogic.cmd:
2.) 找到set CLASSPATH=%SAVE_CLASSPATH%
3.) 在该句之前加上:set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6.jar
4.) 在set CLASSPATH=%SAVE_CLASSPATH%之后加上:set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
UNIX系统
1.) 修改weblogic domain/bin下的startWebLogic.sh
2.) 找到CLASSPATH="${SAVE_CLASSPATH}"
3.) 在该句之前加上:PRE_CLASSPATH="${WL_HOME}/server/lib/antlr-2.7.6.jar"
4.) 在CLASSPATH="${SAVE_CLASSPATH}"之后加上:CLASSPATH="${PRE_CLASSPATH}${CLASSPATH}"
步骤4:经过以上更改后,如果还是出现Hibernate错误,请在hibernate的配置文件中加上
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
2.java.lang.NoSuchMethodError: org.w3c.dom.Element.getTextContent()Ljava/lang/String
造成这个异常的原因是web工程文件中的xml解析文件和weblogic自带的xml解析文件有冲突,删掉web工程文件中的xercesImpl-2.6.2.jar、xmlParserAPIs-2.6.2.jar、xml-apis-1.0.b2.jar这三个jar包