2017-02-17 1 views
0

최대 절전 모드 4/Struts 2 프로젝트에 난처한 상황에서 도움이 필요합니다. 이것은 Hibernate 3으로 수년간 함께 일했던 첫 번째 Hibernate 4 (4.3.11) 프로젝트입니다. 데이터베이스는 MySQL 5입니다.최대 절전 모드 예외 자바 스크립트

모든 매핑 클래스는 Eclipse의 JBoss Tools 4.3.5에서 제공하는 Hibernate Tools 화성 2. 아무런 문제가 발생하지 않았으므로 문제가 없습니다.

그러나 테스트 할 때, 나는이 예외에 직면

2017-02-16 17:23:45 ERROR Dispatcher:38 - Exception occurred during processing request: metier.Ville_$$_javassist_2 cannot be cast to javassist.util.proxy.Proxy 

java.lang.ClassCastException가 : metier.Ville는 _ $$ _ javassist_2는 org.hibernate.proxy에서 javassist.util.proxy.Proxy 캐스트 할 수없는 org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy에서 .pojo.javassist.JavassistLazyInitializer.getProxy (JavassistLazyInitializer.java:147) org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy (JavassistProxyFactory.java:75)에서 (AbstractEntityTuplizer.java:771)

나는 that post을 읽었지만 무슨 일이 일어나는지 이해하지 못합니다.

Salle과 Ville의 두 클래스가 있습니다. 여기에 최대 절전 모드 XML 파일입니다 : Salle.hbm.xml & Ville.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated 2 f?vr. 2017 11:28:16 by Hibernate Tools 4.3.5.Final --> 
<hibernate-mapping> 
    <class name="metier.Salle" table="salle" catalog="aevbadherents" optimistic-lock="version"> 
     <id name="idSalle" type="int"> 
      <column name="idSALLE" /> 
      <generator class="assigned" /> 
     </id> 
     <many-to-one name="ville" class="metier.Ville" fetch="select"> 
      <column name="idVilleSalle" /> 
     </many-to-one> 
     <property name="adresse1" type="string"> 
      <column name="Adresse1" length="80" /> 
     </property> 
     <property name="adresse2" type="string"> 
      <column name="Adresse2" length="80" /> 
     </property> 
     <property name="description" type="string"> 
      <column name="Description" length="500" /> 
     </property> 
     <set name="courses" table="cours" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="IdSalle" not-null="true" /> 
      </key> 
      <one-to-many class="metier.Cours" /> 
     </set> 
     <set name="passagegrades" table="passagegrade" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="IdSalle" /> 
      </key> 
      <one-to-many class="metier.Passagegrade" /> 
     </set> 
    </class> 
</hibernate-mapping> 

두 번째 파일 :

<hibernate-mapping> 
    <class name="metier.Ville" table="ville" catalog="aevbadherents" optimistic-lock="version"> 
     <id name="idVille" type="int"> 
      <column name="idVILLE" /> 
      <generator class="assigned" /> 
     </id> 
     <many-to-one name="departement" class="metier.Departement" fetch="select"> 
      <column name="idDepartement" not-null="true" /> 
     </many-to-one> 
     <property name="nom" type="string"> 
      <column name="Nom" length="60" not-null="true" /> 
     </property> 
     <property name="codepostal" type="string"> 
      <column name="codepostal" length="6" not-null="true" /> 
     </property> 
     <property name="gpslat" type="string"> 
      <column name="GPSLat" length="12" not-null="true" /> 
     </property> 
     <property name="gpslon" type="string"> 
      <column name="GPSLon" length="12" not-null="true" /> 
     </property> 
     <set name="adherentsForIdVilleResid" table="adherent" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="IdVilleResid" /> 
      </key> 
      <one-to-many class="metier.Adherent" /> 
     </set> 
     <set name="clubs" table="club" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="idville" not-null="true" /> 
      </key> 
      <one-to-many class="metier.Club" /> 
     </set> 
     <set name="salles" table="salle" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="idVilleSalle" /> 
      </key> 
      <one-to-many class="metier.Salle" /> 
     </set> 
     <set name="adherentsForIdVilleNais" table="adherent" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="IdVilleNais" /> 
      </key> 
      <one-to-many class="metier.Adherent" /> 
     </set> 
    </class> 
</hibernate-mapping> 

나는이 예외가 JAR 충돌에 의해 발생 될 수 있음을 읽을 수 있지만 I ...

내가 난처한 상황에 빠진 해요로

antlr-2.7.7.jar 
commons-fileupload-1.3.jar 
commons-io-2.0.1.jar 
commons-lang3-3.1.jar 
commons-logging-1.2-javadoc.jar 
commons-logging-1.2.jar 
dom4j-1.6.1.jar 
freemarker-2.3.19.jar 
hibernate-commons-annotations-4.0.5.Final.jar 
hibernate-core-4.3.11.Final.jar 
hibernate-jpa-2.1-api-1.0.0.Final.jar 
jandex-1.1.0.Final.jar 
javassist-3.18.1-GA.jar 
jboss-logging-3.1.3.GA.jar 
jboss-logging-annotations-1.2.0.Beta1.jar 
jboss-transaction-api_1.2_spec-1.0.0.Final.jar 
log4j-1.2.15.jar 
mysql-connector-java-5.1.40-bin.jar 
ognl-3.0.6.jar 
struts2-core-2.3.15.3.jar 
truc.txt 
xwork-core-2.3.15.3.jar 

이, 제발 도와주세요 : (이? 어쩌면 내가해야) 찾을 했어요 아무는 메이븐을 사용하므로 나를 JAR 파일 포함을 보여 두지 마세요

답변

0

이 문제점의 가능한 원인 중 하나는 클래스 경로에 동일한 클래스의 여러 버전이 있다는 것입니다.

내가 java2s.com에서 찾고있다, 당신이 나와있는 항아리, 아무도 클래스 javassist.util.proxy.Proxy를 포함 할 것 같다, 그래서 다른 항아리가 다음 명령을 jarscan 사용하여 해당 클래스가 포함되어있는 경우 찾기 위해 노력할 것입니다 :

를 여러 패키지가 동일한 클래스 포함되어 있음을 발견하는 경우

jarscan -d PATH_TO_YOUR_CLASSPATH_DIR -j javassist.util.proxy.Proxy 
당신이있어 https://java.net/projects/jarscan/downloads

에서 jarscan 다운로드 할 수 있습니다, 당신이 완료됩니다.

0

말라구나,

도움 주셔서 감사합니다. jarscan의 결과는 다음과 같습니다.

D:\temp\java\jarscan>jarscan -j javassist.util.proxy.Proxy 
...................... 
+javassist-3.18.1-GA.jar 
    javassist-3.18.1-GA.jar\javassist/util/proxy/Proxy.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$1.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$2.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$3.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$ClassLoaderProvide 
r.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$Find2MethodsArgs.c 
lass 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$ProxyDetails.class 

    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory$UniqueName.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyFactory.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyObject.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyObjectInputStream.class 
    javassist-3.18.1-GA.jar\javassist/util/proxy/ProxyObjectOutputStream.class 
---------------------------------------------- 
Scanned archives: 22 
Errors: 0 
Archives with hits: 12 

따라서 다른 클래스에는 해당 클래스가 들어 있지 않습니다.

+0

놀랍습니다. javassist-3.18.1-GA.jar을 제거한 다음 컴파일하고 마지막으로 새로운 WAR를 생성했습니다. 분명히 충돌했습니다. 나는 같은 JAR 파일을 추가했다 ... 이제는 작동 중이다! 나는 전혀 undestand하지 않는다 ... –