在WebLogic中运行时ClassNotFoundException(HqlToken)
我有一个.war文件,用于通常在Jetty中正常运行的应用程序。
我正在尝试将应用程序移植到WebLogic中运行,但在启动时我遇到了以下exception:
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.(CharScanner.java:51) at antlr.CharScanner.(CharScanner.java:60) at org.hibernate.hql.antlr.HqlBaseLexer.(HqlBaseLexer.java:56) at org.hibernate.hql.antlr.HqlBaseLexer.(HqlBaseLexer.java:53) at org.hibernate.hql.antlr.HqlBaseLexer.(HqlBaseLexer.java:50) ...
解决这个问题的最佳方法是什么?
我正在使用Hibernate 3.3.1.GA和WebLogic 10.3.2.0。
WebLogic有自己的ANTLR版本,这会导致您遇到的问题。 使用Web应用程序解决此问题的一种方法是将weblogic.xml
的prefer-web-inf-classes
元素设置为true
。
.... true ....
weblogic.xml
在WEB-INF
。
在我看来, war
的最佳解决方案:创建文件webapp\WEB-INF\weblogic.xml
并放置文本
false antlr.*
如果您有像我这样的EAR项目,那么您需要将此元素添加到weblogic ear部署描述符[ weblogic-application.xml ]
antlr.*
我想在weblogic 11g(Weblogic Server 10.3.5)上部署WAR文件。 通常,在Web应用程序中,将有web.xml。 为了使Weblogic选择web.xml中提到的类,我们需要在WEB-INF / weblogic.xml中包含一个文件。 以下是代码。
ProjectName true
这解决了我的问题,我能够在weblogic上部署WAR。 请从weblogic控制台启用Web存档选项。
我有一个EAR,所以我不得不添加一个文件META-INF / weblogic-application.xml
该文件本身非常简单,这适用于Oracle WebLogic 11g,即WebLogic Server 10.3.x:
xml version="1.0" ?> antlr.*
对于那些尝试上述方法在weblogic-application.xml
描述符中将antlr
名称空间声明为“prefer-application-packages”并且仍有相同问题的人,您可能会尝试覆盖weblogic-domain的类路径在启动脚本中直接使用项目库:
为此,请执行以下步骤:
1.)在Weblogic域home中找到文件bin/startWeblogic.[sh|cmd]
2.)找到set SAVE_CLASSPATH=
3.)替换为此(在Windows上,相应地适应mac / * nix)
set CLASSPATH=C:\SomeProject\WebContent\WEB-INF\lib\*;%SAVE_CLASSPATH% rem set CLASSPATH=%SAVE_CLASSPATH% set SAVE_CLASSPATH=
4.)保存,(重新)启动您的weblogic域并交叉手指。
Nota bene:如果您的域名是多个部署的人工制品的所在地,这可能不是一个好主意。 此外,在某些情况下,可能只能从WEB-INF / lib文件夹中选择相关的jar文件。 当然,如果你使用maven,你需要在其他地方托管这些库。
此解决方案也适用于从eclipse Servers视图中启动的Weblogic Server,因为Oracle Weblogic适配器使用命令行脚本来启动服务器。
- 如何将Hibernate类映射转换为Spring应用程序上下文?
- Hibernate:最佳集合类型 – 包,idbag,set,list,map
- 使用@Transactional时,EntityManager.persist()不会插入数据
- 使用哪一个:OpenSessionInViewInterceptor或OpenSessionInViewFilter?
- Hibernate不会自动创建表
- Hibernate回调
- 如何构建一个动态查询,该查询添加了迄今为止的天数,并使用条件API将该日期与另一个日期进行比较?
- 在Spring 3 / Hibernate中回滚事务的最佳实践
- 如何在Java Hibernate应用程序中修复java.lang.ArrayIndexOutOfBoundsException