Spring ClassNotFoundException:org.hibernate.hql.ast.HqlToken当我试图执行hql时
当我尝试在代码中执行HQL时,出现以下异常。我在多个站点中检查了这个问题,发现antlr.2.7.6.jar shd位于类路径中。我在我的项目中检查了这一点,发现它存在于我的Maven依赖项中。所以不应该有这样的问题。但我还是遇到了这个问题。在这方面有人能帮我吗。我在以下函数的“empList=getHibernateTemplate().find(“from Employee”);”行中遇到此错误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() {
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
文件
/common/lib/antlr-2.7.7.jar
/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
在其中一个站点中,我发现我们需要在weblogicpre_compile
path变量中添加antlr.2.7.6.jar
文件
/common/lib/antlr-2.7.7.jar
/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