当我尝试在代码中执行HQL时,发生以下异常。我在各个站点中进行了检查,发现antlr.2.7.6.jar shd位于类路径中。我在项目中检查了此内容,发现在我的Maven依赖项中存在该内容。因此,不应有任何此类问题。但是我仍然遇到这个问题。谁能在这方面帮助我。我在“ empList = getHibernateTemplate()。find(“来自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; }
异常stacktrace:
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
我解决了这个问题。目前,我正在使用weblogic 12c和Hibernate 3.6.9。
在一个站点中,我发现我们需要antlr.2.7.6.jar在weblogic pre_compile路径变量中添加文件。
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
PRE_CLASSPATH
我在开窗机上遵循了这些步骤。就我而言, wl_homeC:\Oracle\Middleware\wlserver_12.1v在 common / lib中 设置为此处。
C:\Oracle\Middleware\wlserver_12.1v
我添加了这个jar并PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar在 /common/bin/commEnv.cmd中 添加了设置代码, 然后重新启动了weblogic。这对我来说很好。
PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar