一尘不染

在WebLogic中运行时,ClassNotFoundException(HqlToken)

hibernate

我有一个.war文件,该文件通常在Jetty中可以正常运行。

我试图将应用程序移植到WebLogic中运行,但是在启动时遇到了以下异常:

ERROR:Foo - Error in named query: findBar
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from Bar]
    at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:80)
    at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
    at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:54)
    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)
    ...

解决此问题的最佳方法是什么?

我正在使用Hibernate 3.3.1.GA和WebLogic 10.3.2.0。


阅读 542

收藏
2020-06-20

共1个答案

一尘不染

WebLogic具有自己的ANTLR版本,这会导致您面临的问题。使用Web应用程序解决此问题的一种方法是将中的prefer-web-inf- classes元素设置weblogic.xmltrue

<weblogic-web-app>
  ....
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
  ....
</weblogic-web-app>

weblogic.xml进去WEB-INF

2020-06-20