ClassNotFoundException: org.hibernate.hql.ast.HqlToken

[b][/b]1、ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误
此错误一般是发生在使用WEBLOGIC做为SERVER的项目中,原因是antlr这个jar包冲突导致,WEBLOGIC自带了很多JAR包,我们自己的项目要求版本较高,但是WEBLOGIC会优先加载自己自带的JAR,因此导致出现了这个问题。
处理方法一:
          1.%JAVA_HOME%/jre/lib/ext下增加antlr-2.7.6.jar或者如果使用WEBLOGIC,可以在启动脚本中把此JAR加入到classpath中。
           2.在hibernate.properties上,或是在spring的conext xml中,加上一个属性hibernate.query.factory_class
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory

处理方法二:
   1、拷贝Hibernate3里带的包antlr-2.7.5H3.jar到%WL_HOME%\server\lib下
   2、修改% mydomain% \ startWebLogic.cmd 或startWebLogic.sh:
       在set CLASSPATH之前加上下面一句:
       set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
      在set CLASSPATH之后加上下面一句:
       set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
   3、如方法一指定hibernate.query.factory_class
  注:%WL_HOME%值: %WEBLOGIC_HOME%\wlserver_10.3\
处理方法三:
    修改或添加weblogic.XML中如下代码段,配置优先加载应用自己的class
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

<context-root>um</context-root>
    <weblogic-version>10.3.3</weblogic-version>
</weblogic-web-app>

你可能感兴趣的:(java,Hibernate)