小编典典

ClassNotFoundException:org.hibernate.hql.ast.HqlToken每当我尝试执行HQL时

hibernate

当我尝试在代码中执行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

阅读 250

收藏
2020-06-20

共1个答案

小编典典

我解决了这个问题。目前,我正在使用weblogic 12c和Hibernate 3.6.9。

在一个站点中,我发现我们需要antlr.2.7.6.jar在weblogic pre_compile路径变量中添加文件。

  1. Weblogic 12c:对于符合Java EE 6的Weblogic版本,我们仅需要添加antlr jar依赖项。
  2. 下载以下文件并将其放在 <WL_HOME>/common/lib/antlr-2.7.7.jar
  3. 将以上文件添加到类路径中

对于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_homeC:\Oracle\Middleware\wlserver_12.1vcommon
/ lib中
设置为此处。

我添加了这个jar并PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar
/common/bin/commEnv.cmd中 添加了设置代码, 然后重新启动了weblogic。这对我来说很好。

2020-06-20