[SPRING] ClassNotFoundException : HQL을 실행하려고 할 때 org.hibernate.hql.ast.HqlToken
SPRINGClassNotFoundException : HQL을 실행하려고 할 때 org.hibernate.hql.ast.HqlToken
내 코드에서 HQL을 실행하려고하면 다음 예외가 발생합니다. 여러 사이트에서 이것을 확인한 결과 antlr.2.7.6.jar shd가 클래스 경로에 있다는 것을 알았습니다. 내 프로젝트에서 이것을 확인하고 이것이 내 Maven 의존성에 있음을 발견했다. 따라서 그러한 문제가 없어야합니다. 하지만 여전히이 문제가 발생합니다. 이 점에서 누구든지 나를 도울 수 있습니까? "empList = getHibernateTemplate ()."(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
해결법
-
==============================
1.weblogic 10.3에서이 문제가 발생하여 응용 프로그램 클래스 경로에 antlr-2.7.7.jar가 있고 weblogic-application.xml 파일에 "antlr. *"의 prefer-application-packages를 추가하여 해결할 수있었습니다.
weblogic 10.3에서이 문제가 발생하여 응용 프로그램 클래스 경로에 antlr-2.7.7.jar가 있고 weblogic-application.xml 파일에 "antlr. *"의 prefer-application-packages를 추가하여 해결할 수있었습니다.
-
==============================
2.정확한 최대 절전 모드 요구에 따라 antlr 의존성을 완전히 제거 할 수 있습니다. 이것을 당신의 최대 절전 모드 속성들에 추가함으로써 당신은 문제없이 실행할 수 있습니다 :
정확한 최대 절전 모드 요구에 따라 antlr 의존성을 완전히 제거 할 수 있습니다. 이것을 당신의 최대 절전 모드 속성들에 추가함으로써 당신은 문제없이 실행할 수 있습니다 :
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
-
==============================
3.나는이 문제를 해결했다. 현재 weblogic 12c와 Hibernate 3.6.9를 사용하고 있습니다.
나는이 문제를 해결했다. 현재 weblogic 12c와 Hibernate 3.6.9를 사용하고 있습니다.
그리고 사이트 중 하나에서 우리는 weblogic pre_compile path 변수에 antlr.2.7.6.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로 설정되었습니다.
이 병을 추가하고 /common/bin/commEnv.cmd에 PRE_CLASSPATH = % WL_HOME % / common / lib / antlr-2.7.7.jar 코드를 추가하고 weblogic을 다시 시작했습니다. 이것은 나를 위해 잘 일했다.
-
==============================
4.weblogic.xml 파일을 prefer-application-packages로 수정할 수도 있습니다. 자세한 내용은이 포럼 게시물을 확인하십시오.
weblogic.xml 파일을 prefer-application-packages로 수정할 수도 있습니다. 자세한 내용은이 포럼 게시물을 확인하십시오.
from https://stackoverflow.com/questions/17819450/classnotfoundexception-org-hibernate-hql-ast-hqltoken-when-ever-i-am-trying-to by cc-by-sa and MIT license