[Hibernate] Class niet gevonden: criterion/Criterion?

Pagina: 1
Acties:

  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 11:10

spaceboy

Op grote hoogte

Topicstarter
Ik ben er BIJNA, dat ik iets uit 'n database op een website laat zien (d'oh). Wat ik werkend heb:

1) een HibernateReadTest.java die via een DAO de database benaderd en in de console laat zien
2) een web-applicatie (zelfde project, andere packagenaam) met een Product.java en een ProductManager.java die een lijstje met producten uitspuugt en op het scherm in de browser toont.

Nu wil ik die 2 combineren door de aanroep naar de DAO in de ProductManager te doen (zodat hij niet in Java een lijstje "verzint", maar het even uit de database haalt). Als ik dan m'n server opstart krijg ik een probleem dat Spring een BeanCreationException throwt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2006-10-13 10:20:21,265 ERROR [org.springframework.web.servlet.DispatcherServlet] - <Context initialization failed>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springappController' defined in ServletContext resource [/WEB-INF/springapp-servlet.xml]: Cannot resolve reference to bean 'prodMan' while setting bean property 'productManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'prodMan' defined in ServletContext resource [/WEB-INF/springapp-servlet.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ernstig.bus.ProductManager]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
Caused by: 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'prodMan' defined in ServletContext resource [/WEB-INF/springapp-servlet.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ernstig.bus.ProductManager]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
Caused by: 
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ernstig.bus.ProductManager]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
Caused by: 
java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
    at com.ernstig.bus.ProductManager.<init>(ProductManager.java:16)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:82)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:59)

(ik heb al op Google gezocht, maar daar wordt ik niet veel wijzer uit, temeer omdat het lijkt of ik een Class niet heb (die NoClassDefFoundError), maar die Hibernate-zooi heb ik gewoon in m'n project hangen. Plus: het Hibernate verhaal WERKT ook gewoon, gezien mijn HibernateReadTest.java die iets uit de database in de console kan laten zien...)

Anyone with some bright ideas?

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.


  • Dnomaid
  • Registratie: Augustus 2003
  • Laatst online: 09-02 17:18
Kijk om te beginnen eens in je hibernate libraries of je de bewuste klasse kan vinden.
Vervolgens nogmaals je classpath checken ...

  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 11:10

spaceboy

Op grote hoogte

Topicstarter
BobbyD82 schreef op vrijdag 13 oktober 2006 @ 10:32:
Kijk om te beginnen eens in je hibernate libraries of je de bewuste klasse kan vinden.
Vervolgens nogmaals je classpath checken ...
Ja, die zit er in. Die zit in hibernate3.jar, opgenomen in Hibernate 3.1 Core Libraries. Ook als ik hibernate3.jar manueel nog 'n keer toevoeg maakt dat niet uit.

Maar feit blijft dat ik IN datzelfde project (maar in een andere package-naam) gewoon van Hibernate gebruik maak (in HibernateReadTest.java, deze werkt). Dus ik vind het wat apart dat zogauw ik in een business-logica class (in een business-logica package) gebruik wil maken van de DAO (gewoon het instantieren van de DAO gaat al fout), dat 'ie dan de mist in gaat.

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Zitten de hibernate jar files bij deployment wel in je /WEB-INF directory?

Het is niet voldoende om deze in je IDE in het classpath te hebben zitten, wat wel werkt voor console like tests uitgevoerd vanuit je IDE.

  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 11:10

spaceboy

Op grote hoogte

Topicstarter
-FoX- schreef op vrijdag 13 oktober 2006 @ 12:41:
Zitten de hibernate jar files bij deployment wel in je /WEB-INF directory?

Het is niet voldoende om deze in je IDE in het classpath te hebben zitten, wat wel werkt voor console like tests uitgevoerd vanuit je IDE.
Ja, heb ik ook al naar gekeken, die staan er gewoon bij in de lib-dir in m'n WEB-INF na deployment.

Heb ondertussen wel weer iets specifieker misschien mijn probleem: het lijkt of Spring de beans niet kan instantieren. Dus ik zit nu te pielen in mijn springapp-servlet.xml

Hier staat de gewraakte code, ik heb nu bijvoorbeeld die prodMan als eerste bean in die servlet gezet en daar knalt hij meteen op. Omdat hij een ProductManager wil instantieren en daarin wordt verwezen naar die DAO. Zogauw ik de verwijzing naar die DAO weghaal uit m'n ProductManager class gaat het wel goed. Helpt dat?
code:
1
2
3
4
5
6
7
8
9
10
11
12
...
<beans>
    <bean id="prodMan" class="com.ernstig.bus.ProductManager">
        <property name="products">
            <list>
                <ref bean="product1"/>
                <ref bean="product2"/>
                <ref bean="product3"/>
            </list>
        </property>
    </bean>
...

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Het probleem is dat er in je DAOs waarschijnlijk een verwijzing staat naar org.hibernate.criterion.Criterion, en deze kan hij blijkbaar niet vinden. Het feit dat alles in je IDE wel goed geconfigureerd is, duidt erop dat er iets mis is met je classpath in je webapp.

Je zal wat meer info moeten geven (dir-list van je project), want zo kan ik je niet veel vertellen

  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 11:10

spaceboy

Op grote hoogte

Topicstarter
Oke, dat klinkt logisch. Hopelijk is dit al meer goede info:

De structuur van de gedeployde (ik neem aan dat je die bedoelt en niet de structuur uit MyEclipse) app:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
\ <app>
    \ <images>
    \ <META-INF>
    \ <WEB-INF>
        \ <classes>
            \ <com>
                \ <business>
                    ...
                \ <hibernate>
                    ...
                \ <web>
                    SpringappController.class
                    ...
            applicationContext.xml
            hibernate.cfg.xml
        \ lib
            hibernate3.jar
            jstl.jar
            ...
        springapp-servlet.xml
        web.xml
        ... (diverse tld's)
    index.jsp

Het is slechts een gedeelte van de dingen die ik verwacht belangrijk te zijn? Nog andere info nodig?

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.

Pagina: 1