2

누가이 문제를 조사하도록 도와 줄 수 있습니까?이 응용 프로그램이이 오류를 생성하게 될 수 있습니다. 이 자습서를 사용하여 Hibernate in Netbeans을 사용하고 있습니다. "Film"에서이 줄로 가면 튜토리얼에 따라 Film 테이블의 레코드를 테스트하도록 실행되지만 결과는 아래 오류입니다. 나는 무엇을 해야할지 알아 내기 위해 인터넷 검색을했고, 지금까지 본 모든 것은 javassist jar 파일이 다른 디렉토리에 존재할 수 있다고보고되었다는 것입니다. 하나는 Hibernate (Hibernate 4.x-javassist-3.15.0.GA) 디렉토리에 있고, 다른 하나는 glassfish (Glassfish Server 4) 디렉토리에있다. 글래스 피시 lib 디렉터리에서이 항목을 검색해 보았습니다.Javassist ClassCastException - 최대 절전 모드 및 넷빈트

java.lang.ClassCastException: dvdstore.Language_$$_javassist_4 cannot be cast to javassist.util.proxy.ProxyObject 
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:147) 
    at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:71) 
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:631) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3737) 
    at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:360) 
    at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281) 
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152) 
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090) 
    at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038) 
    at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:630) 
    at org.hibernate.type.EntityType.resolve(EntityType.java:438) 
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:139) 
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:857) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) 
    at org.hibernate.loader.Loader.doList(Loader.java:2542) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) 
    at org.hibernate.loader.Loader.list(Loader.java:2271) 
    at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:940) 
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268) 
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 

프로젝트의 jar 목록입니다. The list of jar files for the project enter image description here

+0

Maven으로 프로젝트를 빌드하고 있습니까? 프로젝트에서'dependency : tree'를 수행하고 결과물을 붙여 넣을 수 있습니까? 대부분의 경우, Hibernate와 호환되지 않는 javassist의 너무 새로운 버전을 사용하고 있습니다. –

+0

아니요, 저는 웹 프로젝트 인 Maven을 사용하지 않고 있습니다. 작업하고있는 jar 파일 목록을 추가하는 프로젝트를 편집했습니다. 감사합니다. 매우 감사드립니다. – kehinde

답변

3

너무 오래된 버전의 javassist를 사용 중입니다. Hibernate 4의 경우, newer than 3.16 인 javassist 버전이 필요하다. 동일한 문제는 this related question에서 논의됩니다. Maven 또는 Gradle과 같은 빌드 도구를 사용하여 프로젝트를 빌드하십시오. 이러한 도구는 사용자의 전이 의존성을 해결하므로 이러한 버전 충돌을 피할 수 있습니다.

+1

대단히 감사합니다. 나는 이것이 수수께끼를 풀어야한다고 생각한다. 고맙다. 프로젝트를 Maven 프로젝트로 변환하고 더 나은 성능을 제공하는지 살펴 보겠습니다. – kehinde

+0

안녕하세요, Maven은 시작하기가 복잡하지만 장기적으로 노력할 가치가 있습니다. 개인적으로 나는 Gradle을 선호합니다. 귀하의 질문에 답이 나면이 질문을 해결 된 것으로 표시하십시오. 감사! –

+0

확인. gradle은 종속성 관리를 위해 Maven과 동일한 것을 달성합니까? 나는 그것을 시도 할 것이다. 감사. – kehinde