2017-02-17 3 views
0

Мне нужна помощь, так как я в тупике на проекте Hibernate 4/Struts 2. Это мой первый проект Hibernate 4 (4.3.11), так как я много лет работал с Hibernate 3. База данных - это MySQL 5.Hibernate exception javassist

Все классы сопоставления были созданы с помощью инструментов Hibernate, предоставляемых JBoss Tools 4.3.5, на Eclipse Марс 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 не может быть приведен к javassist.util.proxy.Proxy в org.hibernate.proxy .pojo.javassist.JavassistLazyInitializer.getProxy (JavassistLazyInitializer.java:147) на org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy (JavassistProxyFactory.java:75) в org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy (AbstractEntityTuplizer.java:771)

Я читал that post, но я не понимаю, что происходит.

Участвуют два класса: Salle и Ville. Вот файлы XML Hibernate: 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> 

Я читал, что это исключение может быть вызвано баночку конфликта, но я не нашли anything.I не использовать Maven, поэтому позвольте мне показать вам, баночки включены (возможно, я должен?):

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 

Пожалуйста, помогите мне, так как я в тупике ...

ответ

0

Одна из возможных причин этой проблемы заключается в том, что у вас есть в вашем пути к нескольким версиям одного и того же класса.

Я смотрел в java2s.com и ни один из кувшина вы перечислили, не кажется, содержит класс javassist.util.proxy.Proxy, поэтому я попытаюсь найти, если любой другой сосуд содержит этот класс, используя jarscan с помощью следующей команды:

jarscan -d PATH_TO_YOUR_CLASSPATH_DIR -j javassist.util.proxy.Proxy 

вы можете скачать jarscan здесь https://java.net/projects/jarscan/downloads

Если вы обнаружили, что несколько пакетов содержат один и тот же класс, вы сделали.

0

Malaguna,

Благодарим за помощь. Вот результат 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 ... и теперь это работает! Я вообще не расстроен ... –