当我尝试在代码中执行HQL时发生以下异常。我在各个站点检查了这个,发现antlr.2.7.6.jar shd在类路径中。我在我的项目中检查了这一点,发现我的Maven依赖项中存在这个问题。所以不应该有这样的问题。但我仍然遇到这个问题。谁能在这方面帮助我。我在“empList = getHibernateTemplate()。find(”from Employee“);”行中收到此错误在以下功能中。
public List<EmployeeTO> getAllEmp() {
List<Employee> empList = new ArrayList<Employee>();
List<EmployeeTO> empListTO = new ArrayList<EmployeeTO>();
empList = getHibernateTemplate().find("from Employee");
try {
BeanUtils.copyProperties(empListTO, empList);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return empListTO;
}
异常堆栈跟踪:
Root cause of ServletException.
org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.myapp.domain.Employee]; nested exception is org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.myapp.domain.Employee]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:656)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
Truncated. see log file for complete stacktrace
Caused By: org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.myapp.domain.Employee]
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)
Truncated. see log file for complete stacktrace
答案 0 :(得分:2)
我在weblogic 10.3中遇到过这个问题,在应用程序类路径中有antlr-2.7.7.jar,并且能够通过添加&#34; antlr。*&#34;的prefer-application-packages来解决它。在weblogic-application.xml文件中。
答案 1 :(得分:1)
我解决了这个问题。目前我正在使用weblogic 12c和Hibernate 3.6.9。
在其中一个网站中,我发现我们需要在weblogic antlr.2.7.6.jar
路径变量中添加pre_compile
文件。
<WL_HOME>/common/lib/antlr-2.7.7.jar
适用于Windows:
在 /common/bin/commEnv.cmd
中添加以下行set PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar
对于Linux:
在 /common/bin/commEnv.sh
中添加以下行<WL_HOME>/PRE_CLASSPATH=$WL_HOME/common/lib/antlr-2.7.7.jar
导出PRE_CLASSPATH
我在我的窗口机器上执行了这些步骤。对于我的情况, wl_home 在 common / lib 中设置为C:\Oracle\Middleware\wlserver_12.1v
。
我添加了这个jar并在 /common/bin/commEnv.cmd 中添加了set PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar
代码并重新启动了weblogic。这对我来说很好。
答案 2 :(得分:1)
根据您确切的休眠需求,可以完全删除antlr依赖项。通过将其添加到您的hibernate属性,您可以毫无问题地运行:
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
答案 3 :(得分:0)
您还可以将weblogic.xml文件修改为prefer-application-packages。查看this forum post了解详细信息。
答案 4 :(得分:0)
The package name 'rescuetrailer' is already been used by another package: {PackageConfig Name:rescuetrailer namespace: abstract:false parents:[{PackageConfig Name:webwork-default namespace: abstract:false parents:[]}]}
Could not execute action
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from pinacle.person.model.Person p where p.jobNo='meiql']
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)
weblogic 10.3.6 杰克1.6 centos7.6
做到这一点
cat $DOMAIN_HOME/bin/setDomainEnv.sh | grep PRE_CLASSPATH
export PRE_CLASSPATH=/YOUDIR/antlr-2.7.6.jar