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

当将基于tomcat和myeclipse开发的项目部署到weblogic上时,遇到无法访问数据库的问题,报错为HibernateQueryException,原因在于类HqlToken的ClassNotFoundException。解决方案是在WEB-INF目录下添加weblogic.xml配置文件,通过设置<prefer-web-inf-classes>true</prefer-web-inf-classes>指示优先从项目lib目录加载jar包,避免与weblogic内置包冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题出现的原因:在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 已有的包冲突引起的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值