2009-11-30 6 views
2

Mon application essaie d'utiliser les annotations Hibernate. Je suis devenu la version 3.5.0 de Mise en veille prolongée installé, mais lorsque je tente de charger mon application, je reçois l'exception suivante:Encore une autre question Hibernate

junit.framework.AssertionFailedError: Exception in constructor: testSubscriber (java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
    at java.lang.Class.getConstructor0(Class.java:2699) 
    at java.lang.Class.newInstance0(Class.java:326) 
    at java.lang.Class.newInstance(Class.java:308) 
    at javax.persistence.Persistence.findAllProviders(Persistence.java:79) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33) 
    at com.upod.dao.SubscriberDAOTest.<init>(SubscriberDAOTest.java:32) 
    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:513) 
    at junit.framework.TestSuite.createTest(TestSuite.java:58) 
    at junit.framework.TestSuite.addTestMethod(TestSuite.java:280) 
    at junit.framework.TestSuite.<init>(TestSuite.java:140) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.getTest(JUnit3TestLoader.java:102) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.loadTests(JUnit3TestLoader.java:59) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 
Caused by: java.lang.ClassNotFoundException: javax.persistence.spi.ProviderUtil 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:319) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:254) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:399) 
    ... 22 more 
) 
    at junit.framework.Assert.fail(Assert.java:47) 
    at junit.framework.TestSuite$1.runTest(TestSuite.java:90) 
    at junit.framework.TestCase.runBare(TestCase.java:130) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:120) 
    at junit.framework.TestSuite.runTest(TestSuite.java:230) 
    at junit.framework.TestSuite.run(TestSuite.java:225) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 

apprently, je manque quelque chose, ou je bocaux incompatibles à nouveau , mais pour la vie de moi, je ne peux pas comprendre où est le problème. J'ai le fichier hibernate3.jar, ejb3-persistence.jar et toutes les dépendances spécifiées dans les documents Hibernate, mais je reçois toujours ceci.

Est-ce que quelqu'un a déjà vu cela ou a une idée de ce que je fais?

Merci

--Steve

Répondre

1

Avez-vous le pot JPA correct dans votre classpath? puisque vous êtes erreur: java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil

EDIT

T'sais, avant d'aller plus loin en essayant de comprendre cela, nous devrions nous demander si elle est vraiment nécessaire d'être à l'aide 3.5.0 (depuis au moment de cet écrit, c'est 3.5.0- Beta -2). Si tout ce que vous cherchez est Annotations, utiliser Hibernate Core 3.3.2 est suffisant pour vous permettre d'utiliser Hibernate Annotations 3.4.0.

à mon humble avis, vous voudrez peut-être tout simplement sauvegarder une version à quelque chose « sûr »

+0

La seule jarre JPA que je connaisse est le fichier ejb3-persistence.jar, et je l'ai sur mon classpath. La classe qui n'est pas trouvée n'est pas définie dans ce fichier. – Steve

+0

Hmmm, d'où vient ce 'ejb3-persistence.jar'? est-ce JPA 2.0? – dustmachine

+0

Près de ce que je peux dire, ce pot est nécessaire pour définir les annotations pour une application JPA. Si je le supprime, je reçois des erreurs de compilation pour @Entity, etc ... – Steve

2

Je ne sais pas quels sont les documents dont vous parlez comme vous ne postez aucun lien donc je n'ai pas vérifié ce il dit, mais je pense que vous vous manque la dépendance jpa-api que je peux voir dans le pom.xml de hibernate-parent-3.5.0-Beta-2 (il fournit javax.persistence.spi.ProviderUtil):

<dependency> 
    <groupId>org.hibernate.java-persistence</groupId> 
    <artifactId>jpa-api</artifactId> 
    <version>2.0-cr-1</version> 
</dependency> 

vous pouvez l'obtenir à partir du référentiel JBoss Maven (il ne semble pas à inclure dans le bundle publié au SourceForge). Il est temps de commencer à utiliser maven :)

6

Si vous utilisez Hibernate 3.5.x, vous avez également besoin du fichier jar suivant.

hibernate-jpa-2.0-api-1.0.0-CR-1.jar

J'ai eu le même problème et en ajoutant que ce soit réglé la question.

+0

il a résolu mon problème aussi! merci Srini! – Bhushan