请教:做了一个简单的struts+hibernate,发布到tomcat可以运行,但发布到weblogic有问题

wjhdtx 2006-11-17 01:01:20
在webloligc的错误信息是
------------------------
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlT
oken [from org.firewolf.hibernate.pojo.FireUsers as u where u.userid='admin' and u.password='admin']
at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:57)
at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:31)
at antlr.CharScanner.<init>(CharScanner.java:51)
at antlr.CharScanner.<init>(CharScanner.java:60)
at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:56)
at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:53)
at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:50)
at org.hibernate.hql.ast.HqlLexer.<init>(HqlLexer.java:26)
at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:44)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:232)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.firewolf.hibernate.HBOperator.query(HBOperator.java:297)
at com.firewolf.hibernate.HBService.querySelectOne(HBService.java:35)
at org.firewolf.struts.action.UserLoginAction.execute(UserLoginAction.java:55)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at org.firewolf.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:77)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
----------------------------------
不知道哪有问题,请帮忙看一下,谢谢
...全文
302 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjhdtx 2006-11-29
  • 打赏
  • 举报
回复
to bigguobing(bigguobing):
你的方法是可行的,非常感谢,虽然有点迟,呵呵
bigguobing 2006-11-27
  • 打赏
  • 举报
回复
呵呵,我说了解决办法一定要给我分哦

在hibernate.cfg.xml文件中设置一下这个property:

<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
wjhdtx 2006-11-17
  • 打赏
  • 举报
回复
我把weblogic.jar包里的antlr包都删除,结果是可以的
但这不是解决的正确办法啊
wjhdtx 2006-11-17
  • 打赏
  • 举报
回复
网上找了一下,说
--------------------
主要是因为h3新版本的ASTQueryTranslatorFactory需要ANTLR库的支持,但是偏偏在weblogic.jar这个库里面已经含有一个版本的ANTLR,从而可能因为类装载的问题而已找不到你的那个类(虽然看上去存在与硬盘,估计都没机会load入内存了)

解决方法据说有两个:
1、使用classic的翻译器,但是这样就不能用hql进行update和delete了
2、把h3的相关类库放到应用服务器的boot classpath中

-------------------------------
但具体怎么加哪些jar包,我加了antlr-2.7.6rc1.jar也不管事,谁还碰到过这个问题
wjhdtx 2006-11-17
  • 打赏
  • 举报
回复
呵呵,我想深入了解一下怎么在tomcat下就可以,weblogic下就不可以,这个类org.hibernate.hql.ast.HqlToken具体又是起一个什么作用?
freedom2001 2006-11-17
  • 打赏
  • 举报
回复
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlT
oken [from org.firewolf.hibernate.pojo.FireUsers as u where u.userid='admin' and u.password='admin']

没看到这提示找不到类吗

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧