У меня есть .war файл для приложения, которое обычно хорошо работает в Причале.
Я пытаюсь портировать приложение для выполнения в 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)
...
Что лучший способ состоит в том, чтобы зафиксировать это?
Я использую, в спящем режиме 3.3.1. GA и WebLogic 10.3.2.0.
WebLogic имеет собственную версию ANTLR, и это вызывает проблему, с которой вы столкнулись. Один из способов решить эту проблему с помощью веб-приложения - установить для элемента preference-web-inf-classes
в weblogic.xml
значение true
.
<weblogic-web-app>
....
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
....
</weblogic-web-app>
weblogic.xml
находится в WEB-INF
.
Если у вас есть проект EAR, как у меня, вам необходимо добавить этот элемент в дескриптор развертывания уха weblogic [ weblogic-application.xml ]
<wls:prefer-application-packages>
<wls:package-name>antlr.*</wls:package-name>
</wls:prefer-application-packages>