Spring ClassNotFoundException:org.hibernate.hql.ast.HqlToken当我试图执行hql时

Spring ClassNotFoundException:org.hibernate.hql.ast.HqlToken当我试图执行hql时,spring,hibernate,Spring,Hibernate,当我尝试在代码中执行HQL时,出现以下异常。我在多个站点中检查了这个问题,发现antlr.2.7.6.jar shd位于类路径中。我在我的项目中检查了这一点,发现它存在于我的Maven依赖项中。所以不应该有这样的问题。但我还是遇到了这个问题。在这方面有人能帮我吗。我在以下函数的“empList=getHibernateTemplate().find(“from Employee”);”行中遇到此错误 public List<EmployeeTO> getAllEmp() {

当我尝试在代码中执行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;
}
public List getAllEmp(){
List empList=new ArrayList();
List empListTO=new ArrayList();
empList=getHibernateTemplate().find(“来自员工”);
试一试{
复制属性(empListTO,empList);
}捕获(非法访问例外e){
e、 printStackTrace();
}捕获(调用TargetException e){
e、 printStackTrace();
}
返回雇主;
}
异常堆栈跟踪:

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
ServletException的根本原因。 org.springframework.orm.hibernate3.HibernateQueryException:ClassNotFoundException:org.hibernate.hql.ast.HqlToken[来自com.myapp.domain.Employee];嵌套异常为org.hibernate.QueryException:ClassNotFoundException:org.hibernate.hql.ast.HqlToken[来自com.myapp.domain.Employee] 位于org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:656) 位于org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) 位于org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411) 位于org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) 位于org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912) 截断的。有关完整的堆栈跟踪,请参阅日志文件 原因:org.hibernate.QueryException:ClassNotFoundException:org.hibernate.hql.ast.HqlToken[来自com.myapp.domain.Employee] 位于org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:80) 位于antlr.CharScanner.setTokenObjectClass(CharScanner.java:340) 位于org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:54) 在antlr.CharScanner.(CharScanner.java:51) 在antlr.CharScanner.(CharScanner.java:60) 截断的。有关完整的堆栈跟踪,请参阅日志文件
我解决了这个问题。目前我正在使用WebLogic12c和Hibernate3.6.9

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

  • WebLogic12c:对于兼容JavaEE6的Weblogic版本,我们只需要添加antlr jar依赖项
  • 下载以下文件并将其放在
    /common/lib/antlr-2.7.7.jar
  • 在类路径中添加上述文件
  • 适用于Windows:

    在/common/bin/commonv.cmd中添加以下行

    对于Linux:

    在/common/bin/commonv.sh中添加以下行

    /PRE_CLASSPATH=$WL_HOME/common/lib/antlr-2.7.7.jar
    
    导出
    PRE_类路径

    我在我的开窗机上遵循这些步骤。在我的案例中,在common/lib中,wl_home被设置为
    C:\Oracle\Middleware\wlserver_12.1v


    我添加了这个jar,在/common/bin/commonv.cmd中添加了set
    PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar
    code,并重新启动了weblogic。这对我来说很好。

    我解决了这个问题。目前我正在使用WebLogic12c和Hibernate3.6.9

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

  • WebLogic12c:对于兼容JavaEE6的Weblogic版本,我们只需要添加antlr jar依赖项
  • 下载以下文件并将其放在
    /common/lib/antlr-2.7.7.jar
  • 在类路径中添加上述文件
  • 适用于Windows:

    在/common/bin/commonv.cmd中添加以下行

    对于Linux:

    在/common/bin/commonv.sh中添加以下行

    /PRE_CLASSPATH=$WL_HOME/common/lib/antlr-2.7.7.jar
    
    导出
    PRE_类路径

    我在我的开窗机上遵循这些步骤。在我的案例中,在common/lib中,wl_home被设置为
    C:\Oracle\Middleware\wlserver_12.1v


    我添加了这个jar,在/common/bin/commonv.cmd中添加了set
    PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar
    code,并重新启动了weblogic。这对我来说效果很好。

    根据您确切的hibernate需求,可以完全删除antlr依赖项。通过将其添加到hibernate属性中,您可能可以运行而不会出现问题:

    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
    
    org.hibernate.hql.classic.ClassicQueryTranslatorFactory
    
    根据您确切的hibernate需要,可以完全删除antlr依赖项。通过将其添加到hibernate属性中,您可能可以运行而不会出现问题:

    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
    
    org.hibernate.hql.classic.ClassicQueryTranslatorFactory
    
    您还可以修改weblogic.xml文件以选择应用程序包。查看详细信息。

    您还可以修改weblogic.xml文件以选择应用程序包。查看详细信息。

    我在weblogic 10.3中遇到了这个问题,应用程序类路径中有antlr-2.7.7.jar,并且能够通过在文件weblogic application.xml中添加“antlr.*”的首选应用程序包来解决这个问题。

    我在weblogic 10.3中遇到了这个问题,在应用程序类路径中有antlr-2.7.7.jar,并且能够通过在weblogic application.xml文件中添加一个首选应用程序包“antlr.*”来解决这个问题。

    我在从hibernate 2迁移到3时遇到了这个问题。这是唯一对我有效的解决方案。此外,我在生产环境中,无法更改服务器配置,无法添加libra
    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)
    
    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)
    
    cat $DOMAIN_HOME/bin/setDomainEnv.sh | grep PRE_CLASSPATH
    
    export PRE_CLASSPATH=/YOUDIR/antlr-2.7.6.jar