xskow's road.

          做好自己,做好一切。
          數據加載中……
          【轉】ClassNotFoundException:org.hibernate.hql.ast.HqlToken-weblogic使用hibernate hql問題解決

          一般我們使用hibernate,最喜歡用的應該就是hql查詢吧,較為靈活寫法也跟sql相似,不過有的同志喜歡用criteria查詢的可能不會看到這個異常信息,呵呵。

          今天把一hibernate war項目部署到wl10.3.3上,部署是不會報錯的,但是當你點到某個功能,這個功能下面有hql查詢,就會報錯,報錯信息如下:

          java.lang.RuntimeException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [select ...]; nested exception is org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [select ...]
          at …
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
          at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
          at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
          at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
          at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
          at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3686)
          at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
          at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
          at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
          at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
          at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
          at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
          at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
          at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
          >

          通過自己做的JarFinder小工具,明顯可以在部署的war包中看到 org.hibernate.hql.ast.HqlToken 類,在hibernate-core-3.3.0.GA.jar中,這報錯不正常啊,估計就是某些包跟wl沖突了,后來google了一下,找到一個國外的帖子,說是antlr的問題,親身試驗了一次,果然是這個問題,現在就把解決方法跟大家分享下:

          將你的war包打入ear包中,當然你還需要有META-INF文件,帶有weblogic-application.xml和application.xml,主要就是在weblogic-application.xml中解決,聲明prefer-application-packages,如下所示(關鍵line3-5):

          <?xml version="1.0" encoding="UTF8"?>
          <weblogic-application>
          <prefer-application-packages>
          <package-name>antlr.*</package-name>
          </prefer-application-packages>
          </weblogic-application>

          而application.xml就較為簡單了,這里就不說了,相信打過ear包的都應該知道怎么回事,呵呵.打包后再次發布,問題解決。

          附上解決問題原帖鏈接:http://forum.springsource.org/showthread.php?t=36860

          不會寫application.xml的可以參考一下java的dtd:http://java.sun.com/dtd/

          再附上一篇08年的英文文章,blogspot的,講的是weblogic jws+spring+hibernate開發的,需要翻墻才能看到:http://timezra.blogspot.com/2008/09/spring-hibernate-and-jax-ws-webservices.html

          歡迎討論~


          原文鏈接:http://www.shaojiahao.org/java/hibernate/weblogic-hibernate-hql-problem

          posted on 2010-11-15 14:51 xskow! 閱讀(1044) 評論(0)  編輯  收藏 所屬分類: SSH探索

          links:
          主站蜘蛛池模板: 瑞丽市| 平和县| 平利县| 汝州市| 大荔县| 尼玛县| 菏泽市| 南涧| 武汉市| 彰化县| 惠安县| 东莞市| 特克斯县| 称多县| 河曲县| 太和县| 明溪县| 顺昌县| 宁德市| 芦溪县| 信宜市| 宁波市| 宁津县| 福清市| 肥东县| 寻乌县| 枞阳县| 伊通| 会同县| 金华市| 汉沽区| 礼泉县| 乳山市| 阳城县| 永胜县| 兰坪| 靖江市| 黔西县| 馆陶县| 常熟市| 罗田县|