关于ClassNotFoundException: org.hibernate.hql.ast.HqlToken 问题的解决

来源:互联网 发布:2017qq钓鱼网站源码 编辑:程序博客网 时间:2024/05/12 03:33

问题出现的原因:在tomcat 和 myeclipse 环境下开发的项目,部署到weblogic 上时候程序无法访问数据库

具体异常是:

org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.tf.zhpp3.persist.ORM.marketprice.SystemConfiguration]; nested exception is org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.tf.zhpp3.persist.ORM.marketprice.SystemConfiguration]
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:657)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:921)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:913)
    at com.tf.zhpp3.persist.dao.marketprice.SystemConfigurationDAO.findAll(SystemConfigurationDAO.java:31)
    at com.tf.zhpp3.service.marketprice.SystemConfigurationService.getConfigMap(SystemConfigurationService.java:52)
    at com.tf.zhpp3.service.marketprice.SystemConfigurationService.findLogPath(SystemConfigurationService.java:139)
    at com.tf.zhpp3.service.marketprice.SystemConfigurationService$$FastClassByCGLIB$$dd2a4080.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)

解决办法:在WEB-INF下面添加个weblogic.xml,

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <jsp-descriptor>
        <keepgenerated>false</keepgenerated>
        <!--
            page-check-seconds默认值是1,表示每隔1秒对JSP页面进行检查,检查JSP页面是否被修改、是否需要重新编译。
            系统上线后会影响性能,需要对该默认值修改为-1,表示永不检查
        -->
        <page-check-seconds>-1</page-check-seconds>
        <verbose>true</verbose>
        <debug>true</debug>
    </jsp-descriptor>

    <container-descriptor>
        <!-- 指示优先从部署项目的WEB-INF/lib目录下加载jar包,解决WegLogic与hibernate包冲突问题 -->
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
        <!--
            
            servlet-reload-check-secs的默认值也是1,每隔1秒检查servlet是否被修改并需要重新编译,
            很影响性能。这里建议修改为-1,表示永不检查
        -->
        <servlet-reload-check-secs>-1</servlet-reload-check-secs>
    </container-descriptor>

    <context-root>/zhppkk3</context-root>
    <session-descriptor>
        <cookie-name>ZHPP3_JSESSIONID</cookie-name>
    </session-descriptor>
</weblogic-web-app>  


PS:重要的是红色那行,因为异常出现的原因是程序的包和weblogic 已有的包冲突引起的。

0 0