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:
          主站蜘蛛池模板: 繁昌县| 保康县| 榆社县| 郴州市| 靖西县| 宜丰县| 瓦房店市| 庆城县| 邵武市| 扶风县| 司法| 汾阳市| 肥西县| 凭祥市| 永和县| 金山区| 兴山县| 封开县| 罗江县| 恩施市| 肇庆市| 开平市| 阆中市| 田阳县| 东源县| 肥东县| 玛纳斯县| 千阳县| 罗田县| 启东市| 恭城| 凭祥市| 忻州市| 同德县| 万盛区| 平山县| 固始县| 甘泉县| 阿瓦提县| 安丘市| 合川市|